【问题标题】:Is there a simple code to allow certain user(s) access to see command buttons?是否有一个简单的代码允许某些用户访问查看命令按钮?
【发布时间】:2020-02-26 03:39:12
【问题描述】:

好的,我在用户表单后面编码安全性时遇到了困难。让小编给大家盘点一下吧。我创建了这个制作表“tblPermissionTypes”,其中基本上有两个字段“ID”和“EmployeeType_ID”。 ID 字段表示访问的安全级别 0 到 2,EmployeeType_ID 是标题:0 = 请求者,1 = 管理员,2 = 打印机。

话虽如此,我还有另一个表“tblEmployees”,其中包含相同的字段“EmployeeType_ID”,我手动设置了 0、1 和 2。此表还包含所有员工的用户名

最后,我有另一个表“tblPermission”,其中包含三个字段“EmployeeType_ID”、“FormName”和“HasAccess”

我的最终结果是每当此 tblPermission 在 HasAccess 字段下有一个复选框时,我想根据 EmployeeType_ID 字段授予访问权限以与表“tblEmployees”进行通信,但在这种情况下,我希望他们只能查看包含该特定表单的按钮。

Private Sub cmdClick_Click()

Dim strSQL As String
Dim permission As String

If permission = ("fOSUserName") = True Then
Run strSQL
strSQL = "SELECT * FROM tblEmployees WHERE "
strSQL = strSQL & "tblEmployees.Five2 =" & ("fOSUserName") & """, = False 
Then

MsgBox "You do not have permission!", vbExclamation

Else'
cmdButton.Visible True

End If

NOTE: fOSUserName, is a function I created basically the same thing as 
Environ("UserName") 


Debug.Print strSQL

【问题讨论】:

  • 不要将函数调用放在引号之间。
  • tblPermissionTypes 中 EmployeeType_ID 字段的更好名称是 EmployeeTypeTitle。

标签: vba security ms-access userform


【解决方案1】:

函数调用不应包含在引号内。您构造了一条 SQL 语句,但没有正确使用它。您声明并使用变量 permission 但不设置变量 - 它是一个空字符串。需要表单名称作为搜索条件。其他几个语法错误,但它们会随着这个建议的代码而消失。在表单打开事件中运行此代码以禁用按钮,甚至不给未经授权的用户单击的机会。不要用强调他们在等级制度中地位低下的弹出消息来惹恼他们。

您需要构建一个将 tblEmployees 连接到 tblPermission 的查询,以便 UserName、FormName、HasAccess 字段都可用,然后在搜索权限时引用该查询。

DLookup 可以在这里提供服务。

Me.buttonNameHere.Visible = Nz(DLookup("HasAccess", "queryNameHere", _
     "UserName='" & fOSUserName & "' AND FormName='FormNameHere'"), 0)

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 2011-02-16
    • 2019-06-25
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2021-09-17
    相关资源
    最近更新 更多