/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
fejl på søgning i db med 2 kriterier ved b~
Fra : mik Thomsen


Dato : 07-12-03 01:46

Hejsa

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".

mit udtryk ser således ud :

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" &
Server.MapPath("../marked/log/ejendom/login_2000.mdb")
Conn.Open DSN

' SQL forespørgsel
strSQL = "Select * from ejendom Where vej = '"&
Request.Form("vej") &"'" and where husnr = '"&
Reguest.form("husnr") &"'""
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

' 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") & "&nbsp;&nbsp; "

' 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

' 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") &"'""
-----------------------------------------------------------------
-----------------^


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Side:
POST 21 bytes to /marked/restanceresultat.asp

POST Data:
vej=sl%F8jen&husnr=52



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.

på forhånd tak

med venlig

Mik Thomsen



--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jørn Andersen (07-12-2003)
Kommentar
Fra : Jørn Andersen


Dato : 07-12-03 02:19

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") & "&nbsp;&nbsp; "
>
> ' 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

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste