1

ページを切り替えることなく、情報を検証しようとしています (この場合、ユーザー名、ユーザー名が見つかった場合は、テキスト ボックスにデータを入力し、ユーザー名を含むテーブルを動的に作成します)。ただし、75 行目で次のエラーが表示されます。

ADODB.Recordset

 error '800a0e78' 

Operation is not allowed when the object is closed. 

/login.asp, line 75

私はレコードセットをどこにも閉じていません。私の知る限り、それはうまくいくはずです。私は何を間違っていますか?

<%
Dim cn,rs
    Set cn = Server.CreateObject("ADODB.Connection")
    Set rs = Server.CreateObject("ADODB.recordset")

    cn.Provider = "Microsoft.Jet.OLEDB.4.0"

    cn.Open Server.MapPath("login.mdb")

'Default message for the user on the login page
msg = "Please login"

'Logout code. This code empties the session variable which holds the user's userID.
If Request.QueryString("action") = "logout" Then
    Session("user_id") = ""
    msg = "You have been logged out"
End If


'Check if the form has been submitted

If Request.Form("Submit") = "Test" Then

    user_name = Request.Form("user_name")
    user_pass = Request.Form("user_pass")

    mySQL = "SELECT user_id, user_name, user_pass FROM users WHERE user_name = '" & user_name & "' AND user_pass = '" & user_pass & "'"

    'Select the data from the database using the submitted data.
    rs.Open mySQL, cn

        'Check if a match was found.
        If NOT rs.EOF Then

            'Session("user_id") = rsLogin("user_id")
            'Response.Redirect("profile.asp")

            u = rs("user_name")

        Else
            'If a match was not found then output an error.
            Response.Redirect("login.asp?errmsg=Login failed")
        End If
End If
%>



<!DOCTYPE html>
<html>
<head>
</head>

<body>
<form name="form1" id="form1" method="post" action="">
  <table width="300" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td>Username</td>
      <td><input name="user_name" type="text" id="user_name" /></td>
    </tr>
    <tr>
      <td>Password</td>
      <td><input name="user_pass" type="password" id="user_pass" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Test" /></td>
    </tr>
  </table>
</form>
<input id="fileno" value="<%=u%>" type="text">


<%
        While NOT rs.EOF
%>
    <table width="200" border="1" cellspacing="0" cellpadding="2">
  <tr>
    <th scope="col"><div align="left">username</div></th>
  </tr>

  <tr>
    <td><%=u%></td>
  </tr>
<%
        rs.MoveNext
        Wend
%>
</table>
</body>
</html>
4

2 に答える 2

1

この条件が満たされない場合。

If Request.Form("Submit") = "Test" 

あなたのコードは、レコードセットを開かずに rs.eof にアクセスしようとします。

rs.openそのブロックの外側を置きます。

于 2013-02-23T05:07:12.657 に答える
-2

接続オブジェクトを閉じていないことを意味します。ページの最後で
試しset cn =Nothingてください

于 2013-02-23T04:55:07.257 に答える