红皮书之实例1“登录系统”

本文记录了一位开发者从学习VB转向使用ADO进行数据库操作的过程。文章详细描述了在使用《红皮书实例》教程中遇到的挑战,包括解决ADO引用缺失、路径配置问题以及调试用户名与密码验证错误的具体步骤。

         在学完VB之后进入到下一个学习资料《红皮书实例》,当时挺激动的,学习了好长时间的VB终于要结束了,学的时间长了感觉有点枯燥。第一眼看见红皮书的感觉就是代码特别多。在做第一个实例的时候就遇到了挫折,信心受到了打击。好了,就进入到在学习过程中遇到的问题吧!

     1.在敲完代码之后点击运行时出现下图情况: 用户定义类型未定义,出现这种情况的原因是我们在运行之前没有建立ADO引用,ADO引用对象操作如下:

     (1)选择“工程——引用——打开ADO对象库——选择Microsoft ActiveX Data  Objects 2.5 Library——单击确定”ADO对象库建立完成。

      2.建立好之后出现了找不到数据库的问题,这里就涉及到了路径的问题,绝对路径和相对路径,之前在VB中也出现过。

     (1)绝对路径:就是从盘符开始,一级一级的一直向下找,像一条弯路一样,都必须经过,在计算机里如图。

       (2)相对路径:这会给我们带来很大的便利,在打开文件时就不用一级一级的找了,直接就从计算机里找到了如出现“App.Path”就是加载绝对路径。

      3。当这些都处理完之后又出现了一个最简单的问题,怎么侃爷看不出,如下图,说是<admin>i不是系统用户,请检查用户名输入是否正确。运行了好几遍都出现,细节决定成败,看出来了端倪,原来是在用户名之前有个空格。才导致出现这样的情况。

 

(1)用户名之前的空格,如图可以看见,鼠标的焦点之前有空格,空格的位置也占了字节,所以会出现这种情况,将空格删除即可。

 

 

 

以下就是我的代码

'用户名:admin

'密  码:123

Option Explicit

Const MaxLogTimes As Integer = 3

'定义允许用户验证登录信息的最多次数

Private Sub cmdCancel_Click()

    Dim intResult As Integer

    '请求用户确认是否真的退出系统登录

    intResult = MsgBox("你选择了退出系统登录,退出将不能起送管理系统!" & vbCrLf _

              & "是否真的退出?", vbYesNo, "登录验证")    

    If intResult = vbYes Then End

    '根据用户选择结束应用程序  

End Sub

 

Private Function Check_PassWord(ByVal UserName As String, ByVal PassWord As String) As Byte

 '==================错误一 没有写参数

'自定义过程,作用是检查口令的正确性。

    On Error GoTo gpError

    Dim objCn As New ADODB.Connection  '==================错误二ADODB

    Dim objRs As New Recordset

    Dim strCn As String

    Dim strSQL As String

    '建立数据库连接 

    objCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

                          "Data Source=" & App.Path & "\实例11.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False"

    objCn.Open

    '执行查询命令,获得用户登录口令

    strSQL = "SELECT口令FROM系统用户WHERE用户名= '" & txtUserName & " '"

  

    Set objRs.ActiveConnection = objCn

    objRs.Open (strSQL)

    '判断有无查询结果 

    If objRs.EOF Then

          Check_PassWord = 0 '没有查询结果,表示该用户为非法用户    

    Else

        '口令是否正确

        If PassWord <> Trim(objRs.Fields("口令").Value) Then

         'Trim()该函数是删除字符串中多余的空格

            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

    Set objRs = Nothing

    Set objCn = Nothing

 End Function

Private Sub cmdOK_Click()

    Static intLogTimes As Integer

    '用于保存用户请求验证的次数

    Dim intChecked As Integer

    Dim strName As String

    Dim strPassWord As String

    intLogTimes = intLogTimes + 1

    '计算登录次数

    

    If intLogTimes > MaxLogTimes Then

    

        '超过允许的登陆次数,显示提示信息

        MsgBox "你已经超过允许验证次数!" & vbCr _

                & "应用程序将结束!", vbCritical, "登录验证"         

        End        '结束应用程序   

    Else

        '进一步验证登录信息的合法性 

        strName = Trim(txtUserName.Text)   '获得输入的用户名

        strPassWord = Trim(txtPassWord.Text)    '获得输入的口令

        '检验用户名和口令的合法性,并根据验证返回值执行相应的操作

        Select Case Check_PassWord(strName, strPassWord)

            Case Is = 0 '用户不是系统用户

                MsgBox "<" & strName & _

                       ">不是系统用户,请检查用户名输入是否正确!", vbCritical, "登录验证"

                txtUserName.SetFocus

                txtUserName.SelStart = 0

                txtUserName.SelLength = Len(txtUserName)

                

            Case Is = 1  '口令错误

            

                MsgBox "口令错误,请重新输入!", vbCritical, "登录验证"

                txtPassWord = ""

                txtPassWord.SetFocus

            

            Case Is = 2 '口令正确

            

                Unload Me  '卸载登录窗体

                MsgBox "登录成功,将启动系统程序!", vbInformation, "登录验证"

                frmMain.Show 

            Case Else    '登录验证未正常完成

                MsgBox "登录验证未正常完成!请重新运行登录程序," & vbCrLf _

                      & "如果仍不能登录,请报告系统管理员!", vbCritical, "登录验证"

                '指示在调用MsgBox函数时,vbCritical显示关键消息图标。            

           End Select

        End If

End Sub

 登录成功的界面如下

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值