Just nu i M3-nätverket
Gå till innehåll

"Dynamisk where villkor"


zupermac

Rekommendera Poster

Tja,

 

Jag bygger ett system som ska låta användaren välja själv vilka villkor hur en sökningen ska göras i databasen.

 

Tex:

SELECT empFname

FROM tblUser

WHERE 'en sträng som kommer i från datalagret (vb.net)'

 

Jag 'konkar' de olika valen som användaren har gjort mha. listboxar och input fält.

I listbox ett (1) finns det flera olika värden (ca. 10) och ett är tex. UserId

I listbox två (2) finns det flera olika värden (ca. 10) och ett är tex. =

I listbox tre (3) kan man skriva fritext och ett är tex. 'xxxxx'

Då blir det följande sträng: "(UserId = 'xxxxx')"

 

Som ni märker så skickas det in en sträng till storeproccen och jag vet inte hur jag ska lösa det på ett annat sätt.. och då ser det ut så här:

SELECT empFname

FROM tblUser

WHERE @variable

 

Det kanske finns ett smartare sätt att bygga detta på, i så fall, hur?

Hjälp mig att lösa detta problem, så att jag kan ta semester snart.. :)

Kör SQL2000..

 

/N

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Visst ska du få gå på semester. Använd Exec:

 

CREATE PROCEDURE ap_DynamicSelect
@SearchString text
AS

EXEC("[color="#0000ff"]SELECT[/color] empFname [color="#0000ff"]FROM[/color] tblUser [color="#0000ff"]WHERE[/color] "+@SearchString)

 

AnjunaMoon

____________________________________________________________

/* There is nothing more permanent than a temporary solution... */

 

Länk till kommentar
Dela på andra webbplatser

åhhhhh... va enkelt.. jaja... när man e trött så funkar inte hjärnan så bra.. :)

 

Tack så mycket... jag ska kolla om det fungerar senare under dagen...

 

 

Länk till kommentar
Dela på andra webbplatser

Olle Nyrén

I listbox 3 kan man skriva t.ex.

[color="#ff0000"]'1'[/color]); [color="#0000ff"]DELETE[/color] [color="#0000ff"]FROM[/color] tblUser; [color="#006400"]--[/color]

Strängen blir då

"(UserId = [color="#ff0000"]'1'[/color]); [color="#0000ff"]DELETE[/color] [color="#0000ff"]FROM[/color] tblUser; [color="#006400"]--)"[/color]

och du kommer att köra

[color="#0000ff"]SELECT[/color] empFname [color="#0000ff"]FROM[/color] tblUser [color="#0000ff"]WHERE[/color] (UserId = [color="#ff0000"]'1'[/color]); [color="#0000ff"]DELETE[/color] [color="#0000ff"]FROM[/color] tblUser; [color="#006400"]--)[/color]

Det är bra om du vill att alla användare skall kunna radera hela databasen.

 

mvh

Olle

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...