整体思想是;将用户的数据保存在注册的数据库中,用户登录验证,需要调用数据库信息/如果数据库中没有用户信息,则提示不是系统用户。
如果用户口令输入错误,则提示口令错误,如果错误次数超过设定次数,则强制退出系统。
若登陆成功,提示信息登陆成功,系统启动!
这期间也遇到了些许问题。
比如说 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