这是我在VBA上的第一次尝试。所以我对一切都不熟悉。
我试图在Access 2007中登录数据库。
我有2 Tables
名为TableLogin和TableUserLevel。
TableLogin具有链接到TableUserLevel的ID,用户名,密码和UserLevel。
TableUserLevel具有ID和UserLevel,其具有Admin和User的级别。
我有一个名为LoginForm的form
,它有两个名为txtUsername和txtPassword的字段以及一个名为cmdLogin的button
字段。
我很确定我的DLookUp
方法有误,但我不知道为什么。我使用第一个DLookUp
来查看用户名和密码是否与一个ID匹配,如果是,则会转到第二个DLookUp
方法,以查看特定用户具有哪个用户级安全性。
现在,我不确定第一个DLookUp
是否合适。我不确定它是否检查两个输入是否来自一个ID。我希望它能像那样工作,而最后一个DLookUp
方法只返回0
而且我不知道为什么。
按钮的VBA代码为:
Private Sub cmdLogin_Click()
Dim UserLevel As Integer
Dim Username As String
If IsNull(Me.txtUsername) Or Me.txtUsername = "" Then
MsgBox "You must enter a Username.", vbOKOnly, "Required Data"
Me.txtUsername.SetFocus
Exit Sub
End If
'Check to see if data is entered into the password box
If IsNull(Me.txtPassword) Or Me.txtPassword = "" Then
MsgBox "You must enter a Password.", vbOKOnly, "Required Data"
Me.txtPassword.SetFocus
Exit Sub
End If
'Check value of username and password in tblLogin to see if this
If IsNull(DLookup("ID", "TableLogin", "Username = '" & Me.txtUsername.Value & "'") And DLookup("ID", "TableLogin", "Password = '" & Me.txtPassword.Value & "'")) Then
MsgBox "Password or Username invalid. Please Try Again", vbOKOnly, "Invalid Entry!"
Else
Username = Me.txtUsername.Value
If IsNull(DLookup("UserLevel", "TableLogin", "Username = '" & Me.txtUsername.Value & "'")) Then
MsgBox ("No security level")
Else
If UserLevel = 1 Then
MsgBox ("yes" & UserLevel)
Else
MsgBox ("No" & UserLevel)
End If
End If
'Close login form and open screen
DoCmd.Close acForm, "LoginForm", acSaveNo
End If
'If User Enters incorrect password 3 times database will shutdown
intLogonAttempts = intLogonAttempts + 1
If intLogonAttempts > 3 Then
MsgBox "You do not have access to this database. Please contact admin.", vbCritical, "Restricted Access!"
Application.Quit
End If
End Sub