我要设计一个密码登陆窗口,从数据库查找用户帐户作出判断是否合法,请高手帮小弟写个VB连access的标准代码。有注释更好!在线等,谢谢!

解决方案 »

  1.   

    自己参考下面的代码进行修改。
    Option ExplicitPrivate Rs As New ADODB.Recordset
    Private Conn As New ADODB.ConnectionPrivate Sub Form_Load()
     Dim strConn As String
     
     ' 连接数据库的字符串
     ' 连接带密码的数据库,直接在连接符后面加上Jet OLEDB:DataBase Password='您的密码'
     ' 连接Access97数据库需要使用Jet.OLEDB.3.5,Access2K和以上数据库使用Jet.OLEDB.4.0
     strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.mdb;Persist Security Info=False"
     
     ' 使用客户端数据游标
     Conn.CursorLocation = adUseClient
     ' 打开Access的连接
     Conn.Open strConn
     
     ' 如果RecordSet的状态不是关闭状态,则关闭Recordset
     If Rs.State <> adStateClosed Then Rs.Close
     
     ' Recordser打开表People
     Rs.Open "Select * from People", Conn, adOpenKeyset, adLockOptimistic
     
     ' 报告出 一共多少笔数据,测试是否存在数据
     ' MsgBox Rs.RecordCount
     
     ' 绑定进DataGrid
     Set DataGrid1.DataSource = Rs
     
    End Sub
      

  2.   

    标准代码,在模块中建立一个连接模块
    dim cn as new adodb.connection
    set cn = new adodb.connection
    cn.connectionstring="uid=admin;pwd=******;driver={microsoft access driver(*.mdb)};dbq="&app.path&"\sj.mdb"
    cn.open
      

  3.   

    窗体上添加两个标签、文本框、按钮。窗体代码:
    Option Explicit'定义允许用户验证登录信息的最大次数
    Const MaxLogTimes As Integer = 3Private Sub cmdCancel_Click()
        '请求用户确认是否真的退出系统登录
        If MsgBox("你选择了退出系统登录,退出将不能启动管理系统!" & vbCrLf _
                  & "是否真的退出?", vbYesNo, "登录验证") = vbYes Then
            Unload Me               '卸载登录窗体
        End If
    End SubPrivate Sub cmdOk_Click()
        Dim intChecked As Integer
        Dim strName As String, MdbPath As String, strPassword As String
        
        '静态常量intLogTimes用于保存用户请求验证的次数
        Static intLogTimes As Integer
        intLogTimes = intLogTimes + 1     '保存登录次数
        If intLogTimes > MaxLogTimes Then
            '超过允许的登录次数,显示提示信息
            MsgBox "你已经超过允许的登录验证次数!" & vbCr _
                   & "应用程序将结束!", vbCritical, "登录验证"
            End         '结束应用程序
        Else
            '进一步验证登录信息的合法性
            strName = Trim(txtLog(0).Text)          '获得用户名
            strPassword = Trim(txtLog(1).Text)      '获得口令
            
            '检验用户名和口令的合法性,并根据检验返回值执行相应的操作
            MdbPath = App.Path & "\mydb.mdb"
            Select Case Check_PassWord(MdbPath, strName, strPassword)
                Case 0
                    '用户不是系统用户
                    MsgBox "用户不是系统用户,请检查用户名输入是否正确!", _
                           vbCritical, "登录验证"
                    txtLog(0).SetFocus
                    txtLog(0).SelStart = 0
                    txtLog(0).SelLength = Len(txtLog(0))
                Case 1
                    '口令错误
                    MsgBox "口令错误,请重新输入!", vbCritical, "登录验证"
                    txtLog(1) = ""
                    txtLog(1).SetFocus
                Case 2
                    Unload Me           '口令正确,卸载登录窗体
                    MsgBox "登录成功,将启动系统程序!", vbInformation, "登录验证"
                    
                    '通常在此放置显示系统主窗体的语句,例如
                    'frmMain.Show
                Case Else
                    '登录验证未正常完成
                    MsgBox "登录验证未正常完成!请重新运行登录程序," & vbCrLf _
                           & "如果仍不能登录,请报告系统管理员!", _
                           vbCritical, "登录验证"
            End Select
        End If
    End SubPrivate Function Check_PassWord(ByVal MdbPath As String, ByVal UserName As String, _
                                    ByVal Password As String) As Byte
        On Error GoTo gpError
        '查询数据库,获得UserName的登录口令
        Dim objCn As Connection
        Dim objRs As Recordset
        Dim strCn As String, strSQL As String
        Set objRs = New Recordset
        Set objCn = New Connection    '建立数据库连接
        With objCn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & MdbPath & ";" & _
                                "Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;" & _
                                "Jet OLEDB:Database Password=" & Password & ";"
            .Open
        End With
        
        '执行查询命令,获得用户登录口令
        strSQL = "SELECT 口令 FROM 测试表 WHERE 用户名='" _
                 & UserName & "'"
        Set objRs.ActiveConnection = objCn
        objRs.Open (strSQL)
        
        '判断有无查询结果
        If objRs.EOF Then
            Check_PassWord = 0      '没有查询结果,表示该用户为非法用户
        Else
            '检查口令是否正确
            If Password <> Trim(objRs.Fields("口令").Value) Then
                Check_PassWord = 1          '口令不正确
            Else
                Check_PassWord = 2         '口令正确
            End If
        End If
        
        '关闭数据库连接,释放对象
        objCn.Close
        Set objRs = Nothing
        Set objCn = Nothing
        Exit Function
    gpError:
        Check_PassWord = 255
    End Function
      

  4.   

    呵呵,不好意思,忘了一点:请先'引用:Microsoft ActiveX Data Objects 2.7 Library
    Private Function Check_PassWord(...)
    '查询数据库,获得UserName的登录口令
    Dim objCn As Connection 改成 ---〉Dim objCn As ADODB.Connection
    Dim objRs As Recordset 改成---〉Dim objRs As ADODB.Recordset
      

  5.   

    我找不到 Microsoft ActiveX Data Objects 2.7 Library 只有2.5的,哪里可以下到2.7或以上版本的!