Avatar billede Laitings Nybegynder
01. maj 2002 - 09:23 Der er 4 kommentarer og
2 løsninger

søgefunktion der fejler!

Jeg har lidt problemer med denne søgefunktion!
Hvis brugeren ikke indtaster noget i "alder"-søgefeltet går den kold! Det skyldes det "and" der står i slutningen af "for løkken".

Hvordan undgår jeg, at ASP'en kører "alder SQl'en" igennem når der ikke står noget i felterne og at den i dét tilfælde fjerner det sidste "and" i "for løkken"??

Den er sgu' lidt for tricky til mig!

Håber der er nogen der kan hjælpe!?

-Mescalito


<%       
' database forbindelse 
set conndb = Server.CreateObject("ADODB.Connection")
conndb.Open "DSN=Nyt_DSN"

'querystring ="SELECT * FROM Persontabel"
'Set RS2 = Conn.execute( querystring )

sql = "select * from [PersonTabel] WHERE "

' normale indtastnings felter og dropdowns 
Felt = split("Fornavn,Efternavn,Email",",")

for i = 0 to 2 ' 2 er det antal felter der står i Felt - 1
    if request(Felt(i)) <> "" then
        sql = sql & "[" & Felt(i) & "] like '%" & request(Felt(i)) & "%"' and "
        tmpFound = true
    end if
next

sql = sql & "[Alder] BETWEEN " & request("alder") & " and " & request("alder2") & ""

set rs = conndb.Execute(sql)
%>

Avatar billede Laitings Nybegynder
01. maj 2002 - 09:27 #1
Undskyld! Koden skulle selvfølgelig se således ud:

<%       
' din database forbindelse 
set conndb = Server.CreateObject("ADODB.Connection")
conndb.Open "DSN=Nyt_DSN"

'querystring ="SELECT * FROM Persontabel"
'Set RS2 = Conn.execute( querystring )

sql = "select * from [PersonTabel] WHERE "

' normale indtastnings felter og dropdowns 
Felt = split("Fornavn,Efternavn,Email",",")

for i = 0 to 2 ' 2 er det antal felter der står i Felt - 1
    if request(Felt(i)) <> "" then
        sql = sql & "[" & Felt(i) & "] like '%" & request(Felt(i)) & "%' and "
        tmpFound = true
    end if
next

sql = sql & "[Alder] BETWEEN " & request("alder") & " and " & request("alder2") & ""

set rs = conndb.Execute(sql)
%>


Der kom lige for mange " foran det sidste "and" i løkken!
Avatar billede webbe Nybegynder
01. maj 2002 - 09:44 #2
Hvad med at lave en If-sætning inden din sql?

Fx.

If request("alder") = "" Then
  alder1 = "1"
Else
  alder1 = request("alder")
End if

If request("alder2") = "" Then
  alder2 = "99"
Else
  alder2 = request("alder2")
End if

sql = sql & "[Alder] BETWEEN " & alder1 & " and " & alder2 & ""

På den måde får du en tal-værdi uanset om brugeren indtaster en alder eller ej.

Er felterne tomme er det dine værdier der gælder - ellers er det brugerens værdier der gælder.
Avatar billede Laitings Nybegynder
01. maj 2002 - 10:00 #3
Tak skal du have! Idéen var god, men jeg ændrede lige lidt i din kode!

-Mescalito

<%       
' din database forbindelse 
set conndb = Server.CreateObject("ADODB.Connection")
conndb.Open "DSN=Nyt_DSN"

'Søgning opbygges
sql = "select * from [PersonTabel] WHERE "

' normale indtastnings felter og dropdowns 
Felt = split("Fornavn,Efternavn,Email",",")

for i = 0 to 2 ' 2 er det antal felter der står i Felt - 1
    if request(Felt(i)) <> "" then
        sql = sql & "[" & Felt(i) & "] like '%" & request(Felt(i)) & "%' and "
        tmpFound = true
    end if
next

If request("alder") = "" Then
sql = sql & "[Alder] BETWEEN 1 and 99"
else
sql = sql & "[Alder] BETWEEN " & request("alder") & " and " & request("alder2") & ""
End if

set rs = conndb.Execute(sql)
%>
Avatar billede webbe Nybegynder
01. maj 2002 - 10:01 #4
Well - det du har lavet nu gør det samme! ;0)
Avatar billede Laitings Nybegynder
01. maj 2002 - 10:02 #5
Gav sgu' lige mig selv 5 point for ændringerne! ;-)

-M
Avatar billede webbe Nybegynder
01. maj 2002 - 10:02 #6
Huh??

Nu sårer du mine følelser! *GG*

Ej - det er bare iorden...man skal huske at belønne sig selv! ;0)
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