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
我正在创建一个数据库,其中某些表单对某些用户有限制,而某些表单可以根据用户类型(例如:管理员、用户、来宾)访问。我在主窗体的加载事件上创建了一个可视化基本代码,我还调用了该窗体中的用户类型 (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