webForumDet fria alternativet

SQL-fråga fel

ASP

4 svar · 186 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Jag ska ha en sökfunktion där man antingen ska kunna söka efter ett par olika alternativ eller en kod.
Antingen söker man efter kod eller alternativen båda ska inte gå.

Jag har försökt att göra en litenkodsnutt men det fungerar inte när man söker efter kod. Det måste också gå att göra i en enda sql-fråga tycker jag men det har jag inte lyckatsmed.

Här är min kod:

IF kod = "" THEN
Set rosterRS = Server.CreateObject( "ADODB.Recordset" )
rosterRS.ActiveConnection = Con
rosterRS.CursorType = adOpenStatic
rosterRS.CursorLocation = adUSEClient
rosterRS.Pagesize = 10

sqlString = "SELECT rost_id, rost_kod, rost_sprak, rost_hemvist, rost_kon, rost_alder, rost_karaktar, rost_fil, sprak_svenska, land_svenska " &_
"FROM roster, sprak, land " &_
"WHERE rost_status=1 " 

if karaktar <> 0 then
sqlstring = sqlstring & _
"AND rost_karaktar = " & karaktar & " " 
end if

if alder <> 0 then
sqlstring = sqlstring & _
"AND rost_alder = " & alder & " " 
end if

if hemvist <> 0 then
sqlstring = sqlstring & _
"AND rost_hemvist = " & hemvist & " " 
end if

if sprak <> 0 then
sqlstring = sqlstring & _
"AND rost_sprak = " & sprak & " " 
end if

if kon <> 0 then
sqlstring = sqlstring & _
"AND rost_kon = " & kon & " " 
end if

if typ <> 0 then
sqlstring = sqlstring & _
"AND rost_typ = " & typ & " " 
end if

sqlstring = sqlstring & _
"AND land_id = rost_hemvist " &_
"AND sprak_id = rost_sprak " &_
" ORDER by rost_kod DESC" 
rosterRS.Open sqlString
rosterRS.AbsolutePage = pg
rostcount = rosterRS.RecordCount
END IF

IF kod <> "" THEN
Set rosterRS = Server.CreateObject( "ADODB.Recordset" )
rosterRS.ActiveConnection = Con
rosterRS.CursorType = adOpenStatic
rosterRS.CursorLocation = adUSEClient
rosterRS.Pagesize = 10
sqlString = "SELECT rost_id, rost_kod, rost_sprak, rost_hemvist, rost_kon, rost_alder, rost_karaktar, rost_fil, sprak_svenska, land_svenska " &_
"FROM roster, sprak, land " &_
"WHERE rost_status=1 " &_
"AND rost_kod = "& kod &" " &_
"AND land_id = rost_hemvist " &_
"AND sprak_id = rost_sprak " &_
" ORDER by rost_kod DESC" 
rosterRS.Open sqlString
rosterRS.AbsolutePage = pg
rostcount = rosterRS.RecordCount
END IF

------------------
Adde

Medlem sedan dec. 200012 464 inlägg
#2

Vad är det som går fel?

Vad har kolumnen rost_kod för datatyp?

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20013 406 inlägg
#3

Jag har fått det att fungera men går det inte att få det i en enda sql-fråga?
datatypen är char

------------------
Adde

Medlem sedan dec. 200012 464 inlägg
#4

Jag förstår inte riktigt vad du menar med att få det i en sql-fråga.

Det gör väl inget att du bygger 2 olika strängar för de två sökningarna.

Anledningen till att jag frågade om datatypen är den här

"AND rost_kod = "& kod &" " &_

och att du inte har med ' kring värdet.

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20013 406 inlägg
#5

Nej det har ju ingen betydelse alls tänkte bara försöka hålla ner koden lite grann. Jo jag märkte själv att ' tecknen saknades.

Det är lite jobbigt att olika databaser ska skilja sig år hur man skriver SQL-frågorna.

------------------
Adde

285 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
141 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
143 ms — ändringar (db)