Global G_dbcon As New ADODB.Connection
Global G_tblrct As New ADODB.Recordset
Public Function Querydata(ByVal Strsql As String) As Boolean
    Set G_tblrct = New ADODB.Recordset
    G_tblrct.Open Strsql, G_dbcon, adOpenDynamic, adLockOptimistic, -1
    If Err.Number > 0 Then
        Err.Clear
        Querydata = False
    Else
        Querydata = True
    End If
End Function
Public Function Connecttoserver() As Boolean
On Error GoTo connecterr
    G_dbcon.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=biyesheng;Data Source=localhost"
    G_dbcon.Open
    Connecttoserver = True
    Exit Function
connecterr:
    Connecttoserver = False
    MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description, vbCritical + vbOKOnly, "连接错误"
End Function
Public Function Disconnect() As Boolean
    If G_dbcon.State = adStateOpen Then
        G_dbcon.Close
    End If
    Disconnect = True
End Function//登陆按钮
Private Sub cmdOK_Click()
    M = False
On Error GoTo on_error
    Dim Strquerysql As String
    Strquerysql = "select * from user_info"
    Querydata (Strquerysql)
    G_tblrct.MoveFirst
    '检查正确的用户及密码
    If Trim(txtUserName.Text) = Empty Then
        MsgBox "用户名称不能为空", vbInformation + vbOKOnly, "数据不完整"
        txtUserName.SetFocus
        Exit Sub
    End If
    If Trim(txtPassword.Text) = Empty Then
        MsgBox "用户密码不能为空", vbInformation + vbOKOnly, "数据不完整"
        txtPassword.SetFocus
        Exit Sub
    End If
    If Trim(txtUserName.Text) = G_tblrct("username") And txtPassword.Text = G_tblrct("password") Then
        M = True
        Unload Me
        FrmMain.Show
        Exit Sub
    End If
    G_tblrct.MoveNext
    Do While Not G_tblrct.EOF
        If Trim(txtUserName) = G_tblrct("username") And txtPassword.Text = G_tblrct("password") Then
            Unload Me
            FrmMain.Show
            Exit Sub
        End If
        G_tblrct.MoveNext
    Loop
    If MsgBox("无效的用户名或密码,请重试!", vbRetryCancel, "登录错误") = vbCancel Then
        Unload Me
        End
    End If
    txtUserName.SetFocus
    Exit Sub
cmdOK_Click_exit:
    Set G_tblrct = Nothing
on_error:
    MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description, vbCritical + vbOKOnly, "添加数据错误"
    Set G_tblrct = Nothing
End Sub
大家帮我看看有什么问题~老是出现我用vb访问数据库获取登陆数据的时候,总是出现 “错误代码:3709
                                                   错误描述:连接无法用于执行此操作。在此上下文中它可能已被关闭或无效!”
    这是为什么,开始做好的时候没有这样的阿 现在突然就这样了!
    谢谢大家,帮帮我!

解决方案 »

  1.   

    G_dbcon 没有打开,调用一下 Connecttoserver()
      

  2.   

    是要在按钮点击代码里面调用一下 Connecttoserver()吗?
      

  3.   

    Public Function Querydata(ByVal Strsql As String) As Boolean
        '打开连接对象
        If Connecttoserver = False Then Exit Function    Set G_tblrct = New ADODB.Recordset
        G_tblrct.Open Strsql, G_dbcon, adOpenDynamic, adLockOptimistic, -1
        If Err.Number > 0 Then
            Err.Clear
            Querydata = False
        Else
            Querydata = True
        End If
    End Function
      

  4.   

    为什么要加一句  If Connecttoserver = False Then Exit Function   呢?