我的数据库里的operator表存放有4个用户名和密码,对应4中不同的登录用户,现在验证 普通操作员的登录,它所对应的用户名和密码,在operator表里的第2行数据。
使用ADO 连接数据库。代码如下,清高手看看错在哪??提示错误: 实时错误‘3704’对象关闭时,不允许操作。
Dim cn As New ADODB.Connection
Dim WithEvents rsnames As ADODB.Recordset
Public LoginSucceeded As BooleanPrivate Sub cmdCancel_Click()
    '设置全局变量为 false
    '不提示失败的登录
    LoginSucceeded = False
    Me.Hide
    Form1.Show
End SubPrivate Sub cmdOK_Click()
    '检查正确的密码
 
     If Trim(txtUserName.Text) = Adodc1.Recordset.Fields("用户名") Then
     
        LoginSucceeded = True
        Me.Hide
       baoan_main.Show
        
    Else
        MsgBox "用户名或密码错误,请重试!", , "登录"
        txtUserName.SetFocus
        SendKeys "{Home}+{End}"
    End If
End SubPrivate Sub Form_Load()
Dim sqlstr As String
sqlstr = "provider=sqloledb.1;user id=sa;initial catalog=xiaoqu; datasource=gentleman;persist security info=false"
cn.Open sqlstrSet rsnames = New ADODB.Recordset
   rsnames.MoveNext ' 移动到记录集下一个位置。
   Set Adodc1.Recordset = rsnamesEnd Sub

解决方案 »

  1.   

    正如错误提示的,你可能在 Adodc1对象关闭了还在用它做事。
    楼主可以单步调试一下,肯定就可以找到出问题的语句,
    解决问题不是简单的注重结果,解决的过程是很重要的。
      

  2.   

    去掉这几条语句就可以运行,但不是我所要的结果..我就搞不明白为什么加上这几条语句就提示:实时错误‘3704’对象关闭时,不允许操作。Set rsnames = New ADODB.Recordset
       rsnames.MoveNext ' 移动到记录集下一个位置。
       Set Adodc1.Recordset = rsnames
      

  3.   

    问题解决了.少了这么一条语句
    rsnames.Open strsql, Con, adOpenStatic, adLockReadOnly
      

  4.   

    呵呵,樓主的錯誤顯而易見,給RSNAMES分配一個新的記錄集,但是沒有給他初始化.