Jag e inte så bra på att optimera SQL-frågor så jag skulle gärna vilja ha lite hjälp med detta.
Jag skall ha ett par dropdownmenyer närmare bestämt 5 st som jag skulle behöva lite hjälp med att "utforma":
|Ålder|
där man kan välja från 20 och uppåt med 5 års intervaller t ex 20 - 25 år,
Hur skal denna dropdown ha för value för att få det?
|Utbildning|
Denna har jag redan löst
|Ansökningsdatum|
Där vill jag ha en sån dropdown som finns på webforum.
Visa inlägg från de senaste 2 dagarna osv.
Hur skal denna dropdown ha för value för att få det?
|Kontor|
Denna har jag redan löst
|Jobb|
Denna har jag redan löst
-----------------------------------
Nu till själva SQL-frågan.
Jag vill gärna ha hjälp med att utforma en If-sats som tilllåter att alla olika alternativ kan väljas. här har jag en början på en If-sats:
if kontor= "" then
if jobb = "" then
SQL = "SELECT * FROM ansokan ORDER BY Efternamn ASC"
else
SQL = "SELECT * FROM ansokan where jobb = '" & jobb & "' ORDER BY Efternamn ASC"
end if
else
if jobb = "" then
SQL = "SELECT * FROM ansokan WHERE kontor = '" & kontor & "' ORDER BY Efternamn ASC"
else
SQL = "SELECT * FROM ansokan WHERE kontor = '" & kontor & "' AND jobb = '" & jobb & "' ORDER BY Efternamn ASC"
end if
end if
men den behöver byggas på lite mer med de andra alternativen.
Tack på förhand
Jonas
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
När det gäller SQL-frågorna så blir det enklast att bygga where-delen för sig
sql = "select * from ansokan "
where = ""
if jobb <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " jobb = '" & jobb & "'"
end if
if kontor <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " kontor = '" & kontor & "'"
end if
'med flera
sql = sql & where & " order by Efternamn"
(Man kan skriva delen som bygger upp where som en sub för att få enklare kod.
sub buildWhere(byref where,column,restr)
if where <> "" then
where = " where "
else
where = where & " and "
end if
where = where & column & "= '" & restr & "'"
end sub
och sedan anropa den med
where = ""
call buildWhere where,"jobb",jobb
call buildWhere where,"kontor",kontor
'mfl
)
Jag återkommer om dropdown, måste jobba nu.
------------------ essentitia preter non sans multiplicandum
|Ålder|
där man kan välja från 20 och uppåt med 5 års intervaller t ex 20 - 25 år,
Hur skal denna dropdown ha för value för att få det?
<select name="age">
<option value=" 0 and 5 ">0 till 5
<option value=" 5 and 10 ">6 till 10
..
</select>
på aspsidan
sql = "select * from t where age between " & request.form("age")
|Ansökningsdatum|
Där vill jag ha en sån dropdown som finns på webforum.
Visa inlägg från de senaste 2 dagarna osv.
Hur skal denna dropdown ha för value för att få det?
<SELECT NAME="SearchDate">
<OPTION VALUE="-2">Sedan 2 dagar
<OPTION VALUE="-5">Sedan 5 dagar
...
</SELECT>
på asp-sidan
sql = "select * from t " &_
" where dateColumn >= " &_
" dateadd(""d""," & request.form("searchDate") & ",date)"
Denna lösning är specifik för Access. Använder du någon annan DBMS så får vi väl lösa det då.
red: glömde ett citat.
------------------ essentitia preter non sans multiplicandum
Jga vet att jag kommer med en jobbig fråga nu ;) men jag måste få till detta och jag vet inte riktigt hur jag skall göra.
Jag vill ha så att man kan välja "fritt" ur dropdownerna, t ex väljer jag bara kontor och jobb så skall den bara söka på de kreterierna osv. hoppas du förstår hur jag menar.
är det detta den koden gör?
sql = "select * from ansokan "
where = ""
if jobb <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " jobb = '" & jobb & "'"
end if
if kontor <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " kontor = '" & kontor & "'"
end if
'med flera
sql = sql & where & " order by Efternamn"
Om jag kunde få lite hjälp med detta hade jag varit hel glad ;)
Tack på förhand!
MVH
Jonas
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
Kan nån hjälpa mig med detta, jag behöver verkligen hjälp ;)
sql = "select * from ansokan "
where = ""
if jobb <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " jobb = '" & jobb & "'"
end if
if kontor <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " kontor = '" & kontor & "'"
end if
if age <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = "datediff(""yyyy"",age,date between " & request.form("age")"
end if
if utb <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " utbildning = '" & utb & "'"
end if
if SearchDate <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = "dateColumn >= dateadd(""d""," & request.form("searchDate") & ",date)"
end if
sql = sql & where & " order by Efternamn"
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
Ursäkta, jag skrev lite fel i mitt tidigare inlägg.
sql = "select * from ansokan "
where = ""
if jobb <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & " jobb = '" & jobb & "'"
end if
if kontor <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & " kontor = '" & kontor & "'"
end if
if age <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & "datediff(""yyyy"",age,date between " & request.form("age")"
end if
if utb <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & " utbildning = '" & utb & "'"
end if
if SearchDate <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & "dateColumn >= dateadd(""d""," & request.form("searchDate") & ",date)"
end if
sql = sql & where & " order by Efternamn"
Borde bli bättre så.
------------------ essentitia preter non sans multiplicandum
så här funkar det nu allt funkar utom när man blandar in ålders dropdownen då får jag följande fel
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'jobb = 'Luffare' and kontor = 'Linköping' and datediff([yyyy],age,date between 46 and 65 and utbildning = 'Högskoleingenjör' order by Efternamn'.
/int/test.asp, line 74
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
Och detta felet får jag när jag väljer från searchDate dropdownen
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3.
/int/test.asp, line 74
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
if age <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = "datediff(""yyyy"",age,date) between " & request.form("age")'"
end if
jag får denna fel
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
/int/test.asp, line 76
Här e några av fälten i databasen
|fod_datum|
typ: Datum/tid
där användaren sparar födelsedatum i formatet MM/DD/YYYY
|datum|
typ: Datum/tid
där sparas vilket datum och tid ansökan las upp i databasen
MM/DD/YYYY HH:MM:SS
hoppas att detta skall hjälpa något ;)
Tack på förhand!
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd