Hello,

I am getting the error:

ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.

regarding the line below stating: "Do Until intX = 1 Or GEMCCdb.EOF"

<%
	strPwd = Request.Form("pwd")
	strUsr = Request.Form("usr")

	Set GEMCCdb=Server.CreateObject("ADODB.recordset")
	GEMCCdb.open "TABLE", "DSN=DBNAME;uid=USERNAME;pwd=PASSWORD",2,3
	GEMCCdb.MoveFirst
	
	Do Until intX = 1 Or GEMCCdb.EOF
		If  GEMCCdb("email") = strUsr Then
			intX = 1
			If GEMCCdb("str3") = True Then
				Response.Redirect("login.asp?x=3")
			Else
				If  GEMCCdb("password") = strPwd Then
					GEMCCdb("str1") = False
					GEMCCdb("str2") = False
					GEMCCdb("str3") = False
%>
<form name="login" action="clientele.aspx" method="post" target="_parent">
	<input type="hidden" name="id" value="<%=GEMCCdb("id")%>" />
    <input type="hidden" name="email" value="<%=GEMCCdb("email")%>" />
    <input type="hidden" name="first" value="<%=GEMCCdb("first")%>" />
    <input type="hidden" name="full" value="<%=GEMCCdb("first") & " " & GEMCCdb("last")%>" />
    <input type="hidden" name="last" value="<%=GEMCCdb("last")%>" />
    <input type="hidden" name="password" value="<%=GEMCCdb("password")%>" />
    <input type="hidden" name="random" value="<%=GEMCCdb("random")%>" />
	<input type="hidden" name="login" value="1" />
</form>
<%
					GEMCCdb.Update
					GEMCCdb.Close
%>
<script language="javascript" type="text/javascript">
	document.login.submit();
</script>
<%
				Else
					If GEMCCdb("str1") = False Then
						GEMCCdb("str1") = True
					ElseIf GEMCCdb("str2") = False Then
						GEMCCdb("str2") = True
					Else
						If GEMCCdb("str3") = False Then
							GEMCCdb("str3") = True
						End If
						Response.Redirect("login.asp?x=3")
					End If
					GEMCCdb.Update
					GEMCCdb.Close
					Response.Redirect("login.asp?x=x")
				End If
			End If
		Else
			GEMCCdb.MoveNext
		End If
	Loop
%>

Any help is greatly appreciated. Thank you!

Recommended Answers

All 2 Replies

GEMCCdb.Update
GEMCCdb.Close

when you update and close the record set, it is still going to finish the current loop iteration, and when it comes to check the condition to loop again, your loop checks if GEMCCdb.EOF and when GEMCCdb is closed that is impossible to do.

anyways, ANYTIME you get to GEMCCdb.close, you ALREADY have gone over intX = 1 so the condition is already gonna be over, now im guessing you have this condition there in case the rs is initialy empty, simply take the GEMCCdb.EOF outside of the do while condition and set up an if before it even starts.

...
GEMCCdb.MoveFirst
If GEMCCdb.EOF Then
    intX = 1
End If

    Do Until intX = 1
        ...

Above info is correct but to simplify it:
GEMCCdb.Close should only appear once after Loop

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.