MS Access:锁定特定表单错误

MS Access: Locking Specific Forms Error

我正在创建一个数据库,其中某些表单对某些用户有限制,而某些表单可以根据用户类型(例如:管理员、用户、来宾)访问。我在主窗体的加载事件上创建了一个可视化基本代码,我还调用了该窗体中的用户类型 (txtUserType)。我希望管理员表单只能由管理员访问,但是当我以管理员身份登录时,管理员表单仍处于锁定状态。关于如何解决这个问题的任何帮助?

我在登录表单中创建了一个字符串,以便能够在主表单中调用 UserType 的值。这是代码:

Dim UserType As String
UserType = DLookup("[UserType]", "tbl_Worker", "[LoginID] = '" & 
Me.txtUsername.Value & "'")
Forms![frm_Home]![txtUserType] = UserType

现在我的主窗体中的文本框 txtUserType 显示了登录用户的用户类型。

我的主窗体代码是:

Private Sub Form_Load()

If Me.txtUserType = "Admin" Then
Me.NavigationButton419.Enabled = True
Else
Me.NavigationButton419.Enabled = False
End If

End Sub

3 条可能的建议:

更改您正在测试的事件

即而不是

  Form_Load

使用

  Form_Current

或者更好:

将 txtUserType 字段存储在完全不同的表单上(也可以是作为隐藏表单打开的表单)

If Forms!myHiddenForm.txtUserType = "Admin" Then
...

或者更简洁的方法: 在模块

中创建一个 VBA 函数
Public Function isSuperUser() As Boolean

If Forms!myHiddenForm.txtUserType = "Admin" Then
    isSuperUser = True
Else
    isSuperUser = False
End if

End Function

然后返回您的表格

Private Sub Form_Load()

    Me.NavigationButton419.Enabled = isSuperUser()

End Sub

试试这个并报告任何问题。

Private Sub Form_Load()
    NavigationButton419.Enabled = IsAdmin(txtUsername.Value)
End Sub

Private Function IsAdmin(ByVal Username As String)
    IsAdmin = (Nz(DLookup("[UserType]", "tbl_Worker", "[LoginID] = '" & Username & "'"), "Guest") = "Admin")
End Function

当我尝试不同的方法来创建问题的解决方案并根据其他人的建议时,我想到了这个并且它按我想要的方式工作。这是代码:

Dim UserType As String

UserType = DLookup("[UserType]", "tbl_Worker", "[LoginID] = '" & 
Me.txtUsername.Value & "'")

DoCmd.OpenForm "frm_Home"

Forms![frm_Home]![txtUserType] = UserType

If Form_frm_Home.txtUserType = "Admin" Then
Form_frm_Home.NavigationButton438.Enabled = True
Else
Form_frm_Home.NavigationButton438.Enabled = False
End If