webForumDet fria alternativet

error '80020009' Exception occurred.

ASPur ASP

9 svar · 366 visningar · startad av airwolf

airwolfMedlem sedan okt. 2003132 inlägg
#1

Jag har följande kod på en sida för att se om det
finns nåt PM:

	<%
	'/Check for user message	
	Set Rs = Server.CreateObject("ADODB.Recordset")
			
	SQL = "Select * From tbl_users WHERE folder='" & Session("folder") & "'"
	Rs.Open SQL, Conn, 3,3
			
	Do Until Rs.EOF
	
	If Rs("message") <> "" Then
		%>

		<p>

		<img src="img/inbox.gif"> <a href="inbox.asp">Du har ett nytt personligt meddelande</a>
		<%
		End If
	
	Rs.MoveNext
	Loop
			
	Rs.Close
	Set Rs = nothing
	%>

Allt funkar i frid och fröjd så länge det finns ett meddelande.
Men finns inget meddelande får jag fel:

error '80020009'
Exception occurred.

/pictures.asp, line 19

Rad 19 är: If Rs("message") <> "" Then

Vad har jag missat?

mozillaMedlem sedan juli 20011 084 inlägg
#2

kanske för att RS är EOF men du försöker anropa den ändå? Lägg till en if(NOT rs.EOF) Then

(var ett tag sedan jag pillade med asp, kan hända att jag lagt argumenten fel :e)

UlfTMedlem sedan maj 20018 027 inlägg
#3

Det finns inget i Rs, eftersom det inte fanns några meddelanden. Pröva istället:

If Rs.EOF = false then

airwolfMedlem sedan okt. 2003132 inlägg
#4

Nu har jag

	<%
	'/Check for user message	
	Set Rs = Server.CreateObject("ADODB.Recordset")
			
	SQL = "Select * From tbl_users WHERE folder='" & Session("folder") & "'"
	Rs.Open SQL, Conn, 3,3
	Do Until Rs.EOF

	If Rs.EOF = false then
	%>
		<p>
		<img src="img/inbox.gif"> <a href="inbox.asp">Du har ett nytt personligt meddelande</a>
	<%

	Else
	End If
	
	Rs.MoveNext
	Loop
			
	Rs.Close
	Set Rs = nothing
	%>

Men den skriver alltid ut Du har ett nytt personligt meddelande
Fast fältet är tomt, varför?!

N0M0NEYMedlem sedan juli 200543 inlägg
#5

1. Prova istället för
If Rs.EOF = false then
Använd
If Not Rs.EOF then
2. Du behöver inte else i en if sats om du inte ska göra om villkoret är tvärtom..

doggelitoMedlem sedan juni 20003 076 inlägg
#6

du behöver också vända lite på koden, du kan få error annars:

If Not RS.Eof Then
     Do Until Rs.EOF
	%>
		<p>
		<img src="img/inbox.gif"> <a href="inbox.asp">Du har ett nytt personligt meddelande</a>
<%
     Rs.MoveNext
     Loop
End If

//red
och varför en loop?

If Not RS.Eof Then
%>
		<p>
		<img src="img/inbox.gif"> <a href="inbox.asp">Du har ett nytt personligt meddelande</a>
<%
End If
mozillaMedlem sedan juli 20011 084 inlägg
#7

mozilla (kl 19:15) skrev:

kanske för att RS är EOF men du försöker anropa den ändå? Lägg till en if(NOT rs.EOF) Then

*host* :stud

Och som doggelito säger, du behöver ju ingen loop för att skriva ut ett meddelande.

airwolfMedlem sedan okt. 2003132 inlägg
#8

Då har jag bantat ner till

	<%
	'/Check for user message	
	Set Rs = Server.CreateObject("ADODB.Recordset")
			
	SQL = "Select * From tbl_users WHERE folder='" & Session("folder") & "'"
	Rs.Open SQL, Conn, 3,3
			
	If Not RS.Eof Then
	%>
		<p>
		<img src="img/inbox.gif"> <a href="inbox.asp">Du har ett nytt personligt meddelande</a>
	<%
	End If
	Rs.Close
	Set Rs = nothing
	%>

Men fortfarande visas Du har ett nytt personligt meddelande fastän fältet message är tomt.....

emissionMedlem sedan dec. 19996 721 inlägg
#9

airwolf skrev:

Men fortfarande visas Du har ett nytt personligt meddelande fastän fältet message är tomt.....

Det gör det eftersom du ingenstans kollar huruvida det är tomt eller inte.

SQL = "Select * From tbl_users WHERE folder='" & Session("folder") & "' AND Message<>''"
airwolfMedlem sedan okt. 2003132 inlägg
#10

tänk va lätt det är om man skriver korrekta databasfrågor :D

Tack!

129 ms totalt · 3 externa anrop · v20260731065814-full.b2af184d
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)