做登录时,采用数据库,当输入密码出错重输时,报错:对象已经打开,无法操作!
Option Explicit
Public LoginSucceeded As Boolean
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Public username As String
Public userpwd As StringPrivate Sub ButtonCancel_Click()
 '设置全局变量为 false
    '不提示失败的登录
    LoginSucceeded = False
    Unload Me
End SubPublic Sub ButtonOK_Click()
 '检查正确的密码
 Dim s As String
 username = textName.Text
 userpwd = textPassword.Text
 s = "select * from admini where user_name = '" & username & "' and user_pwd = '" & userpwd & "'"
 Rs.Open s, Cn
 If Rs.BOF And Rs.EOF Then
    MsgBox "无效的密码,请重试!", , "登录"
    textPassword.SetFocus
    textPassword.SelStart = 0
    SendKeys "{Home}+{End}"
   
Else
    '将代码放在这里传递
    '成功到 calling 函数
    '设置全局变量时最容易的
    LoginSucceeded = True
    Me.Hide
End If
End SubPrivate Sub Form_Load()
Dim X As String
X = "Provider=Microsoft.Jet.OLEDB.4.0;"
X = X & "Data Source=D:\data.mdb"
Cn.Open X
End SubPrivate Sub Form_Unload(Cancel As Integer)
Set Cn = Nothing
Set Rs = Nothing
End SubPrivate Sub textPassword_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(vbCr) Then
ButtonOK_Click
End If
End Sub

解决方案 »

  1.   

    这样改一下
    '加入下面一段代码-----------
    if Rs.state<>0 then
       Rs.close
    end if
    '----------------------------Rs.Open s, Cn
     If Rs.BOF And Rs.EOF Then
        MsgBox "无效的密码,请重试!", , "登录"
        textPassword.SetFocus
        textPassword.SelStart = 0
        SendKeys "{Home}+{End}"
       
    Else
        '将代码放在这里传递
        '成功到 calling 函数
        '设置全局变量时最容易的
        LoginSucceeded = True
        Me.Hide
    End If
    .......................
    .....................