On Sun, 7 Dec 2003 00:46:29 +0000 (UTC), mik Thomsen <mwt@image.dk>
wrote:
>Jeg har prøvet og se om jeg kunne finde en løsning på min fejl,
>som jeg får, når jeg laver en søgning i min access- db. men i
>stedet for 1 kriterie bruger jeg 2 . med "and" .
>
>De 2 felter i db er begge "tekst felter".
<snip>
>' SQL forespørgsel
>strSQL = "Select * from ejendom Where vej = '"&
>Request.Form("vej") &"'" and where husnr = '"&
>Reguest.form("husnr") &"'""
Som *altid*, når der er tale om SQL-fejl, så hjælper det at udskrive
den resulterenbde SQL-streng - se:
<url:
http://www.asp-faq.dk/article/?id=41>
I dette tilfælde er der dog en klar syntax-fejl. Du har:
.... WHERE a = 'b' AND WHERE c = 'd'
- det skal være:
.... WHERE a = 'b' AND c = 'd'
(altså kun ét WHERE)
- desuden er der ged i dine anførselstegn + din ene Request er stavet
forkert.
Desuden vil jeg anbefale *ikke* at sætte Request.* direkte ind i
SQL-strenge. Kig evt. på denne artikel:
<url:
http://www.asp-faq.dk/article/?id=95>
Resultatet kunne blive noget i retning af:
strVej = Request.Form("vej")
strHusnr = Request.Form("husnr")
' Her kan du så validere efter behov
strSQL = "SELECT * FROM ejendom" & _
" WHERE vej = '" & strVej & "' AND husnr = '" & strHusnr & "'"
Ang. dit andet spørgsmål:
>hvordan kan jeg lave det sådan, at såfremt den forspurgte adresse
>ikke findes i db, at den så kommer med en meddelse om dette i
>stedet for en fejl.
- så indsæt en If-Then-Else:
>' Udfør forespørgsel (rs indeholder nu resultatet)
>Set rs = Conn.Execute(strSQL)
If rs.EOF Then
' Der er ingen ...
Else
' Udskriv
>' Gennemløb Recordset (rs) med en løkke
>Do
>
> ' Udskriv værdien af kolonnen vej
> Response.Write "" &"<h2>" &"<font color='#FF000000'>" &
>rs("vej") &"</font>" &"</h2>"
> Response.Write "<dt><b>Adresse: </b></dt>" & rs("vej")
> response.write "<dt><b>Nr.: </b></dt> " & rs("husnr")
> response.write "<dt><b>Restanceforhold </b></dt> " &
>rs("restance") & " "
>
> ' Gå til næste Record i rs
> rs.MoveNext
>
>' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
>Loop While Not rs.EOF
End If
Desuden vil jeg generelt anbefale at ændre på loopen, så du i stedet
har:
Do While Not rs.EOF
'
Loop
>
' Husk også at lukke recordset-objektet:
rs.Close
Set rs = Nothing
>' Luk databaseforbindelse
>Conn.Close
>Set Conn = Nothing
>%>
>
>og jeg får følgende fejl :
>
>Fejltype:
>Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
>Slut på sætning var ventet
>/marked/restanceresultat.asp, line 48, column 83
>strSQL = "Select * from ejendom Where vej = '"&
>Request.Form("vej") &"'" and where husnr = '"&
>Reguest.form("husnr") &"'""
>-----------------------------------------------------------------
>-----------------^
Læg mærke til, at den fejl du får her ikke er en SQL-fejl, men en
VBScript-fejl.
Hvis du så kun retter dine anførselstegn, vil du få en
SQL-syntax-fejl, indtil du fjerner det WHERE, der er for meget.
Prøv det - det er meget godt at lære de forskellige fejlmeddelelser at
kende.
Good luck!
--
Jørn Andersen,
Brønshøj