webForumDet fria alternativet

fel i session("inloggad")

ASP

4 svar · 260 visningar · startad av ptr_lks

Medlem sedan juni 2005584 inlägg
Frågan#1

hej,
min registreringssida

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%
  
strUser = replace(Request("chattNamn"), "'", "''")
strPasw1 = replace(Request("chattPassword1"), "'", "''")
strPasw2 = replace(Request("chattPassword2"), "'", "''")

if strUser <> "" then
   Set minCon = Server.CreateObject( "Adodb.Connection" )
   minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/guests.mdb")    
   strSQL = "SELECT * FROM chattUser WHERE chattNamn = '" & strUser & "';"
   Set rs = minCon.Execute(strSQL)
  
		if (rs.EOF) and (strUser <> "System")  then
			  strSQL = "INSERT INTO chattUser (chattNamn, chattPassword) VALUES ('"_
					   & strUser & "', '" & strPasw1 & "');"
    
  Session("Inloggad") = rs("chattID")

    rs.Close
    minCon.Close
    Set rs = Nothing
    Set minCon = Nothing
  
    Response.Redirect "chatten.asp"
  
  end if
  end if
%>

När jag kör sidan i IIS får jag nedanstående felutskrift

Technical Information (for support personnel)

Error Type:
ADODB.Field (0x80020009)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/registrera.asp, line 19

Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

Page:
POST 80 bytes to /registrera.asp

POST Data:
chattNamn=peter&chattPassword1=1234&chattPassword2=1234&btnSignup=Registrera+dig

Rad 19 är

 Session("Inloggad") = rs("chattID")
Medlem sedan dec. 200012 464 inlägg
#2
if (rs.EOF) and (strUser <> "System")  then
   strSQL = "INSERT INTO chattUser (chattNamn, chattPassword) VALUES ('"_
   & strUser & "', '" & strPasw1 & "');"
   Session("Inloggad") = rs("chattID")

Koden i din if-sats utförs enbart om rs.eof är sant och då kan du inte referera till rs("chattID").

Vad vill du göra? Något enligt

<%
  
strUser = replace(Request("chattNamn"), "'", "''")
strPasw1 = replace(Request("chattPassword1"), "'", "''")
strPasw2 = replace(Request("chattPassword2"), "'", "''")

if strUser <> "" and strUser <> "System" then
   Set minCon = Server.CreateObject( "Adodb.Connection" )
   minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/guests.mdb")    
   strSQL = "SELECT chattID FROM chattUser WHERE chattNamn = '" & strUser & "'"
   Set rs = minCon.Execute(strSQL)
   if rs.EOF then
      strSQL = "INSERT INTO chattUser(chattNamn, chattPassword) VALUES ('"_
             & strUser & "', '" & strPasw1 & "')"
      minCon.execute strSQL,,128
      strSQL = "SELECT chattID FROM chattUser WHERE chattNamn = '" & strUser & "'"
      Set rs = minCon.Execute(strSQL)
   end if
   Session("Inloggad") = rs("chattID")
   rs.Close
   Set rs = Nothing
   minCon.Close
   Set minCon = Nothing
end if
Response.Redirect "chatten.asp"

%>

förmodar jag.

Medlem sedan juni 2005584 inlägg
#3

nu får jag fel:

Microsoft JET Database Engine (0x80004005)
Operationen måste använda en fråga som kan uppdateras

minCon.execute strSQL,,128
Medlem sedan dec. 200012 464 inlägg
#4

Välkänt problem. Gör en sökning i forumet.

Medlem sedan juni 2005584 inlägg
#5

ber om ursäkt att jag i min iver glömde så grundläggande och bra sak som "sök"

246 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)