webForumDet fria alternativet

Visa poster om variabel är tom

ASP

8 svar · 171 visningar · startad av Addeladde

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

OM man har ett sökformulär med ett par olika alternativ. Om man väljer att inte fylla i något i formulären vill jag att i SQL-frågan bortser från alternativet.

Exempel om jag på sökformuläret har två rutor Namn och ålder. Jag fyller bara i ålder. då vill jag att alla med den aldern ska visas.

Denna rad i sokfragan ska alltså inte vara med where namn = "& namn &"

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

Medlem sedan dec. 200012 464 inlägg
#2
sql = "select * from ogrish where 1 = 1 "
if  request.form("namn") <> "" then
namn = "'" & replace(namn,"'","''") & "'"
sql = sql & " and namn = " & namn
end if

if  request.form("alder") <> "" then
sql = sql & " and alder = " & request.form("alder")
end if

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

Medlem sedan dec. 19995 874 inlägg
#3

bygg sqlfrågan utifrån vad du får.

<%
If request.form("age") = "" AND request.form("name") = "" Then
where = ""
else
where = "where"
End If

If request.form("age") = "" Then
age = ""
else
age = "age ="
End If
%>
sedan så....

sql = "select * from tbl " & where & age

osv..

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=20" TARGET=_blank>Har du husdjur hemma?
</A>Varför får man inte dricka saltvatten?

Medlem sedan jan. 20013 406 inlägg
#4

Nu blev det snurrigt så här ser min kod ut nu

dim kon, sprak, staus, hemvist, karaktar, alder
'Hämta värden
kon = cINT( Request( "kon" ) )
sprak = cINT( Request( "sprak" ) )
hemvist = cINT( Request( "hemvist" ) )
karaktar = cINT( Request( "karaktar" ) )
alder =cINT( Request( "alder" ) )

Set rosterRS = Server.CreateObject( "ADODB.Recordset" )
rosterRS.ActiveConnection = Con

sqlString = "SELECT 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_hemvist = " & hemvist & " " &_
"AND rost_karaktar = " & karaktar & " " &_
"AND rost_alder = " & alder & " " &_
"AND rost_sprak = " & sprak & " " &_
"AND rost_kon = " & kon & " " &_
"AND land_id = rost_hemvist " &_
"AND sprak_id = rost_sprak " &_
" ORDER by rost_kod DESC" 
SET rosterRS = Con.Execute( sqlString )

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

Medlem sedan dec. 200012 464 inlägg
#5
sqlString = "SELECT 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_hemvist = " & hemvist & " " 

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

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

sqlstring = sqlstring & _
"AND land_id = rost_hemvist " &_
"AND sprak_id = rost_sprak " &_
"AND rost_sprak = " & sprak & " " &_
"AND rost_kon = " & kon & " " &_
" ORDER by rost_kod DESC" 

SET rosterRS = Con.Execute( sqlString

Du får väl anpassa lite beroende på vilka fält som är obligatoriska eller inte.

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

Medlem sedan jan. 20013 406 inlägg
#6

Jag får inga poster uppradade.

sqlString = "SELECT 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 <> "" then
sqlstring = sqlstring & _
"AND rost_karaktar = " & karaktar & " " 
end if

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

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

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

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

sqlstring = sqlstring & _
"AND land_id = rost_hemvist " &_
"AND sprak_id = rost_sprak " &_
" ORDER by rost_kod DESC" 
SET rosterRS = Con.Execute( sqlString )

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

Medlem sedan dec. 200012 464 inlägg
#7

Du kan ju börja med att testa utan att fylla i några villkor alls och ta den sql-fråga som du får och testa den separat.

Sen så får du sätta fler villkor och kontrollera att sql-satsen ser riktig ut.

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

Medlem sedan jan. 20013 406 inlägg
#8

Jag har prövat det.
Om jag väljer att bara ta med detta i koden.

sqlString = "SELECT 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 kon <> "" then
sqlstring = sqlstring & _
"AND rost_kon = " & kon & " " 
end if

sqlstring = sqlstring & _
"AND land_id = rost_hemvist " &_
"AND sprak_id = rost_sprak " &_
" ORDER by rost_kod DESC" 
SET rosterRS = Con.Execute( sqlString )

Om kon = 1 så radar den upp två poster men om kon = "" så radar den inte upp några poster när den borde rada upp 4 st poster.

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

[Redigerat av Addeladde den 16 okt 2001]

Medlem sedan jan. 20013 406 inlägg
#9

:) Löste det! När man använder cINT tilldelas variabeln 0 om det är NULL.

Alltså ska det stå IF alder <> 0

så enkelt var det. Tack för all hjälp Lasse

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

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)