如何修复在Access中创建登录表单的编译错误

时间:2019-01-31 21:34:24

标签: access-vba

我正在为我的ms Access数据库创建from,并且在找不到“ Me.txtUserName”的情况下遇到编译错误。

这是用于Access数据库的。

Dim User As String
Dim UserLevel As Integer
Dim TempPass As String
Dim ID As Integer
Dim UserName As String
Dim TempID As String


If IsNull(Me.txtUserName) Then
    MsgBox "Please enter UserName", vbInformation, "Username required"
    Me.txtUserName.SetFocus
ElseIf IsNull(Me.txtPassword) Then
    MsgBox "Please enter Password", vbInformation, "Password required"
    Me.txtPassword.SetFocus
Else
    If (IsNull(DLookup("UserLogin", "tblUser", "UserLogin = '" & Me.txtUserName.Value & "' And UserPassword = '" & Me.txtPassword.Value & "'"))) Then
        MsgBox "Invalid Username or Password!"
    Else
        TempID = Me.txtUserName.Value
        UserName = DLookup("[UserName]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'")
        UserLevel = DLookup("[UserType]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'")
        TempPass = DLookup("[UserPassword]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'")
        UserLogin = DLookup("[UserLogin]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'")
        DoCmd.Close
        If (TempPass = "password") Then
            MsgBox "Please change Password", vbInformation, "New password required"
            DoCmd.OpenForm "frmUserinfo", , , "[UserLogin] = " & UserLogin
        Else
            'open different form according to user level
            If UserLevel = 1 Then            ' for admin
                DoCmd.OpenForm "Admin Form"
            Else
                DoCmd.OpenForm "Navigation Form"
            End If

        End If
    End If
End If

1 个答案:

答案 0 :(得分:1)

一个直接的问题是您在同一行上有两个变量赋值:

 UserName = DLookup("[UserName]", "tblUser", "[UserLogin] = '" &                    Me.txtUserName.Value & "'") UserLevel = DLookup("[UserType]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'")

这些应移到单独的行上,或者也可以用分号将两个变量分配分开。