Avatar billede klyde Nybegynder
16. september 2002 - 18:05 Der 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...

Hjælp...
/Klyde
Avatar billede somaliomar Praktikant
16. september 2002 - 18:10 #1
Hvilken fejl får du?

Prøv evt. med det her:

<%
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")
%>
Avatar billede taager-kongen Nybegynder
16. september 2002 - 18:14 #2
<% 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......

%>
Avatar billede taager-kongen Nybegynder
16. september 2002 - 18:15 #3
kan vi få fejlen at arbejde med??
Avatar billede klyde Nybegynder
16. september 2002 - 22:49 #4
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

Dette er den fejl jeg får når jeg åbner siden...
Avatar billede klyde Nybegynder
16. september 2002 - 23:22 #5
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...

Hvad skal jeg gøre ved det!

/Klyde
Avatar billede klyde Nybegynder
16. september 2002 - 23:23 #6
Ups nu blev det til linie 9 :)
Avatar billede -mundi- Nybegynder
16. september 2002 - 23:39 #7
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
Avatar billede klyde Nybegynder
04. februar 2003 - 00:31 #8
Undskyld ventetiden, jeg havde glemt dette sprøgsmål...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester