整体思想是;将用户的数据保存在注册的数据库中,用户登录验证,需要调用数据库信息/如果数据库中没有用户信息,则提示不是系统用户。
如果用户口令输入错误,则提示口令错误,如果错误次数超过设定次数,则强制退出系统。
若登陆成功,提示信息登陆成功,系统启动!
这期间也遇到了些许问题。
比如说 1 定义的错误,不太细心。这些是要坚决杜绝的。
2 字母写错,这些也是要避免的,不然庞大的代码,如何有很多的时间来调试呢
3 要写清楚注释,这是比不可少的。
4 App的引用,注意细节。
下面给出我的错误所在
大家注意看黄色代码,App所代表的路径
下面给出文件的具体路径。看出来有什么不同了么,多写了一个路径。
最后附上登录界面
原文代码如下 :
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 Connection, objrs As New Recordset, strcn As String
Dim strsql As String
objcn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & "Data Source=" & App.Path & "\实例2.mdb"
objcn.Open
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
Set objrs = Nothing
Set objcn = Nothing
End Function
Private Sub cmdok_Click()
Static intlogtimes As Integer '保存用户请求登录次数
Dim intchecked As Integer, strname As String, 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 0
MsgBox "<" & strname & _
">不是系统用户,请检查用户名输入是否正确!", vbCritical, "登录验证"
txtusername.SetFocus
txtusername.SelStart = 0
txtusername.SelLength = Len(txtusername)
Case 1
MsgBox "口令错误,请重新输入!", vbCritical, "登录验证"
txtpassword = ""
txtpassword.SetFocus
Case 2
Unload Me
MsgBox "登录成功,将启动系统程序!", vbInformation, "登录验证"
Case Else
MsgBox "登录验证未正常完场!,请重新运行登录程序," & vbCrLf
End Select
End If
End Sub