MattiasMedlem sedan mars 2000205 inlägg Jag håller på med en sökfunktion i ASP där användaren kan ange kriterier för att utföra en snävare sökning. Ett av kritierierna är att rada upp olika objekt som inte är bokade en angiven vecka (v23-35). Användaren väljer en vecka i en dropdown-meny och vid sökning radas sedan alla objekt upp vars vecka i DBn inte är bokad (alltså ikryssad kryssruta i DBn, dvs FALSE). Respektive vecka (v23-35) representeras av en kolumn i tabellen och raderna i tabellen är de bokningsbara objekten.
Vad jag nu undrar är allså hur jag via en SELECT-sats plockar fram alla de objekt/poster som inte är bokade (ej ikryssade, FALSE) angiven vecka?
@ndersMedlem sedan juni 200032 969 inlägg Borde funka:
... WHERE fldField = False
MattiasMedlem sedan mars 2000205 inlägg Ja, så långt hade jag nog klarat själv, men det svåra är att sökningen först ska hitta kolumnen för angiven vecka och därefter leta igenom och plocka ut varje objekt vars kryssruta inte är ifylld. Det är möjligt att jag förklarade det dåligt i mitt första inlägg eller så gör jag det svårare än vad det är. Jag har inte trixat så mkt med ASP/SQL, så jag får skylla på det. ;)
Så här ser iaf tabellen ut (i nedskalad form):

Iofs så är det fler kriterier som anges vid sökningen, vilket komplicerar det hela, men det blir ett senare problem. Det viktiga i nuläget är att se hur man plockar ut objekt utifrån oifyllda kryssrutor.
@ndersMedlem sedan juni 200032 969 inlägg Har du alltså en asp-variabel med ett veckonummer i, som skall användas för att välja ja/nej-fält i tabellen?
strWeekField = "v35"
strSQL = "SELECT * FROM Tabellen WHERE " & strWeekField & " = False"
Nånting sånt? Möjligen hajar jag galet...
Mvh,
MattiasMedlem sedan mars 2000205 inlägg Ja, nu hittas de objekt där angiven vecka är obokad. Tack för det! Det uppstod dock ett annat litet problem i anslutning till detta. Svarssidan där objekten radas upp delas in i delsidor (pga många träffar) och när man klickar på en href-länk till en delsida kommer ett felmeddelande upp. Felmeddelandet lyder:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression
'Rum >= 0 AND Bäddar >= 0 AND Bäddar <= 20 AND
Hav <= 100000 AND Golf <= 100000 AND = False'.
Felmeddelandet hänvisar alltså till en av mina SELECT-satser och på slutet av ovanstående sats så verkar variabeln "Vecka" inte uppfattats innan "= False". Undrar varför?
Kan det ha nåt med länken till sidan att göra? Den koden ser ut så här (jag har kapat koden i sidled för att avlägsna horisontell scrollning på wF):
ref="<a href='" & scriptname & "?rum="&rum&"&mibaddar="&mibaddar&"&mabaddar="&mabaddar
&"&ahav="&ahav&"&golf="&golf&"&omrade="&omrade&"
&whichpage=" & counter
ref=ref & "&pagesize=" & mypagesize & "'>" & pad & counter & "</a>"
JAg har alltså inte lagt till nåt i denna kodsnutten efter att jag implementerat funktionen för sökning via obokad vecka. Måste jag göra det? Hur i så fall?
LarsGMedlem sedan dec. 200012 464 inlägg Du måste väl skicka med veckonumret också.
MattiasMedlem sedan mars 2000205 inlägg Du menar i länkkoden till delsidorna? Jag misstänkte att jag var tvungen att göra det och har provat olika kombinationer på hur jag ska lägga in Vecka i koden, men lyckas inte alls få sökningen att fungera.
Har bl.a testat det här (har bara lagt in: "&Vecka&"=False):
ref="<a href='" & scriptname & "?rum="&rum&"&mibaddar=
"&mibaddar&"&mabaddar="&mabaddar&"&ahav="&ahav&"&golf="
&golf&"&omrade="&omrade&""&Vecka&"=False&whichpage=" & counter
ref=ref & "&pagesize=" & mypagesize & "'>" & pad & counter & "</a>"
Variabeln för vecka heter alltså "Vecka" och jag får ju svar när jag utför själva sökningen på bestämd vecka, så SQL-satsen verkar fungera. Det är alltså bara när jag klickar på länken till en av delsidorna som ett felmeddelandet kommer upp. Men när jag försöker lägga till Vecka där (dvs i koden ovan), så fungerar alltså inte sökningen alls.
LarsGMedlem sedan dec. 200012 464 inlägg ref="<a href='" & scriptname & "?rum="&rum&"&mibaddar=
"&mibaddar&"&mabaddar="&mabaddar&"&ahav="&ahav&"&golf="
&golf&"&omrade="&omrade& "&Vecka=" &vecka & " &whichpage=" & counter
ref=ref & "&pagesize=" & mypagesize & "'>" & pad & counter & "</a>"
och så får du använda
strWeekField = request.querystring("vecka")
strSQL = "SELECT * FROM Tabellen WHERE " & strWeekField & " = False"
eller ?
MattiasMedlem sedan mars 2000205 inlägg Nej, det fungerar tyvärr inte. Får följande felmeddelande vid klickning på en av siffrorna/länkarna till delsidorna:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Rum >= 0 AND Bäddar >= 0 AND Bäddar <= 20 AND Hav <= 100000 AND Golf <= 100000 AND = False AND Kategori='Allaomraden ''.
/svar.asp, line 90
Line 90 leder till SQL-satsen och den ser ut så här i nuläget:
IF omrade="Allaomraden" THEN
IF strWeek="Allaveckor" THEN
Sql = "SELECT * FROM Tabell_1 WHERE Rum >= "&rum&" AND Bäddar >= "&mibaddar&" AND
Bäddar <= "&mabaddar&" AND Hav <= "&ahav&" AND Golf <= "&golf&" ORDER BY Nummer"
ELSE
Sql = "SELECT * FROM Tabell_1 WHERE Rum >= "&rum&" AND
Bäddar >= "&mibaddar&" AND Bäddar <= "&mabaddar&" AND
Hav <= "&ahav&" AND Golf <= "&golf&" AND "&strWeek&" = False ORDER BY Nummer"
END IF
ELSE
IF strWeek="Allaveckor" THEN
Sql = "SELECT * FROM Tabell_1 WHERE Rum >= "&rum&" AND
Bäddar >= "&mibaddar&" AND Bäddar <= "&mabaddar&" AND Hav <= "&ahav&" AND
Golf <= "&golf&" AND Kategori='"&omrade&"' ORDER BY Nummer"
ELSE
Sql = "SELECT * FROM Tabell_1 WHERE Rum >= "&rum&" AND Bäddar >= "&mibaddar&" AND
Bäddar <= "&mabaddar&" AND Hav <= "&ahav&" AND Golf <= "&golf&" AND "&strWeek&" = False
AND Kategori='"&omrade&"' ORDER BY Nummer"
END IF
END IF
Det skumma är ju att sökningen funkar vid första uppradningen, men vid klickning på länkarna till de objekt som hamnat på delsidor (pga många sökträffar) så blir det fel. Därför bör ju felet ligga i koden för länk till delsidor, dvs:
pad=""
scriptname=request.servervariables("script_name")
for counter=1 to maxcount
If counter>=3 then
pad=""
end if
ref="<a href='" & scriptname & "?rum="&rum&"&mibaddar="&mibaddar&"&mabaddar=
"&mabaddar&"&ahav="&ahav&"&golf="&golf&"&omrade=
"&omrade&" &Vecka=" &vecka & " &whichpage=" & counter
ref=ref & "&pagesize=" & mypagesize & "'>" & pad & counter & "</a>"
response.write ref & " "
If counter=27 then
response.write "<br>"
end if
If counter=51 then
response.write "<br>"
end if
next
Där det står &Vecka=" &vecka &" har jag bytt ut till &strWeek=" &strWeek & " eftersom jag ändrat variabelnamn från Vecka till strWeek (som även kan urskiljas i SQL-satsen ovan).