16. september 2002 - 18:05Der er
7 kommentarer og 1 løsning
Hjælp med multi søgning
Hej dav...
Jeg har et mindre problem. Jeg har denne kode bygget op:
<% Sql = "SELECT BoligID, Overskrift, Antalm2, LejeMdr FROM BoligListe Where Area = '"&Request.Querystring("area")&"' And Antalm2 > "&Request.Querystring("Antalm2")&" And LejeMdr < "&Request.Querystring("LejeMdr")&"" Set rs = Server.CreateObject("ADODB.Recordset") %>
Men det virker ikke... Det skulle have været en søge funktion men det kan jeg åbenbart ikke finde ud af heller...
Kan en ikke tage og kikke på det og hjælpe mig med at få koden bygget om.
Der er 3 Request.Querystring variabler som hentes ind:
- Request.Querystring("area") Indeholder tekst eller ingenting "Fyn" eller "" - Request.Querystring("Antalm2") Indeholder et tal - Request.Querystring("LejeMdr") Indeholder et tal
Database felterne der bliver brugt hedder:
- Area Tekst felt - Antalm2 Tal felt - LejeMdr Tal felt
Ideen er at man skal kunne søde på Område, kvadratmeter(som minimum) og lejepris(som maximum)
Problemet er at det ikke er altid at der er noget indhold i area, Antalm2 og LejeMdr og når der er ingenting i fx. LejeMdr så får jeg en db fejl...
<% if Request.Querystring("area") = "" Then Sql = "SELECT BoligID, Overskrift, Antalm2, LejeMdr FROM BoligListe Where Antalm2 > "&Request.Querystring("Antalm2")&" And LejeMdr < "&Request.Querystring("LejeMdr")&"" Set rs = Server.CreateObject("ADODB.Recordset") else Sql = "SELECT BoligID, Overskrift, Antalm2, LejeMdr FROM BoligListe Where Area = '"&Request.Querystring("area")&"' And Antalm2 > "&Request.Querystring("Antalm2")&" And LejeMdr < "&Request.Querystring("LejeMdr")&"" Set rs = Server.CreateObject("ADODB.Recordset") end if %> bare et bud......
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'And'. /danmark/soeg.asp, line 16
Jeg har leget lidt med det selv, så nu ser det sådan ud:
<% If Request.Querystring("area")="" And Request.Querystring("Antalm2")<>"" Then varial = "Where Antalm2 >= "&Request.Querystring("Antalm2")&"" End If If Request.Querystring("area")="" And Request.Querystring("LejeMdr")<>"" Then varial = "Where LejeMdr <= "&Request.Querystring("LejeMdr")&"" End If If Request.Querystring("area")="" And Request.Querystring("Antalm2")<>"" And Request.Querystring("LejeMdr")<>"" Then varial = "Where Antalm2 >= "&Request.Querystring("Antalm2")&" And LejeMdr <= "&Request.Querystring("LejeMdr")&"" End If
If Request.Querystring("area")<>"" Then varial = "Where Area = '"&Request.Querystring("area")&"'" End If If Request.Querystring("area")<>"" And Request.Querystring("Antalm2")<>"" Then varial = "Where Area = '"&Request.Querystring("area")&"' And Antalm2 >= "&Request.Querystring("Antalm2")&"" End If If Request.Querystring("area")<>"" And Request.Querystring("LejeMdr")<>"" Then varial = "Where Area = '"&Request.Querystring("area")&"' And LejeMdr <= "&Request.Querystring("LejeMdr")&"" End If If Request.Querystring("area")<>"" And Request.Querystring("Antalm2")<>"" And Request.Querystring("LejeMdr")<>"" Then varial = "Where Area = '"&Request.Querystring("area")&"' And Antalm2 >= "&Request.Querystring("Antalm2")&" And LejeMdr <= "&Request.Querystring("LejeMdr")&"" End If %> <% Sql = "SELECT BoligID, Overskrift, Antalm2, LejeMdr FROM BoligListe "&varial&"" Set rs = Server.CreateObject("ADODB.Recordset") %>
Det virker i sig selv også godt nok Men... Linie 8 efter ASP tag-start indeholder 2 variabler, Kode trækker alle records ud som indeholder et af de to kriterier. Det er forket... Den skal kun trække records ud som indeholder BEGGE variablerne...
Nu har jeg ikke testes det for fejl, men noget i den her stil synes jeg er lettere
dim temp(3)
area = Request.Querystring("area") antalm2 = Request.Querystring("Antalm2") LejeMdr = Request.Querystring("LejeMdr")
whereClause=""
if len(area)>0 then if len(whereClause)>0 then 'append whereClause=whereClause&" AND area='"&area&"'" else ' start whereClause="WHERE area='"&area&"'" end if end if
if len(antalm2)>0 then if len(whereClause)>0 then 'append whereClause=whereClause&" AND Antalm2 >="&antalm2&"" else ' start whereClause="WHERE Antalm2 >="&antalm2&"" end if end if
if len(LejeMdr)>0 then if len(whereClause)>0 then 'append whereClause=whereClause&" AND LejeMdr="&LejeMdr&"" else ' start whereClause="WHERE LejeMdr<="&LejeMdr&"" end if end if
strSQL="SELECT BoligID, Overskrift, Antalm2, LejeMdr FROM BoligListe "&whereClause
Undskyld ventetiden, jeg havde glemt dette sprøgsmål...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.