不同级别的用户级别权限

时间:2019-05-16 16:17:20

标签: ms-access access-vba ms-access-2010 ms-access-forms

我有用于打开一种特定表单的代码,但是我需要设置不同的用户级别,然后可以使用这些用户级别来限制对Access程序中不同表单的访问。

我有一个登录屏幕,该屏幕使用表employee中的数据(用户名/密码),该表还有一个名为employeeTypeId的外键列,另外还有一个名为{{1}的表},其中AccessemployeetypeId1234不同。

5应该是管理员,5是只读用户,依此类推。第三个表是1,它具有EmployeeAccess以及具有employeeTypeId数据类型的列HasAccess

我正在用它在VBA中编写代码,以确保只有某些用户可以访问某些表格。

我有一个适用于一种形式的代码,我试图找出如何结合使用yes/no和不同的表单名称来使用此HasAccess列(需要弄清楚如何使用以确保employeeTypeId用户可以访问所有表单,employeetypeId=5可以访问除employeetypeId=4表形式以外的所有形式,employee仅可以编辑少数几个形式表格等。

这是登录后(加载时)访问表单的代码:

employeetypeId=3

这是登录表单中的代码:

Private Sub Form_Load()
    If DLookup("HasAccess", "EmployeeAccess", "EmployeeTypeId=" & TempVars("EmployeeType") & " AND FormName='" & Me.Name & "'" = False) Then
        MsgBox "Yo do not have access"
        DoCmd.Close acForm, Me.Name
    End If
End Sub

当前代码在正确登录后会打开所有表单,我想更改它并基于Private Sub btnLogin_Click() Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("Employee", dbOpenSnapshot, dbReadOnly) rs.FindFirst "UserName='" & Me.TextUserName & "'" If rs.NoMatch = True Then Me.LabelWrongUser.Visible = True Me.TextUserName.SetFocus Exit Sub End If Me.LabelWrongUser.Visible = False If rs!Password <> Encrypt(Me.TextPassword) Then Me.LabelWrongPass.Visible = True Me.TextPassword.SetFocus Exit Sub End If Me.LabelWrongPass.Visible = False TempVars("EmployeeType") = rs!EmployeeTypeId.Value End Sub 授予访问权限。

tblEmployeeAccess

=========================

employeeTypeId

我只想知道如何将DoCmd.OpenForm与TempVars(“ FormName”)一起使用,如果可能的话。

1 个答案:

答案 0 :(得分:0)

使用下面的代码,我可以实现结果:

目标是根据EmployeeTypeId和HasAccess设置为True进行过滤(两者结合起来以打开表单)

TempVars("FormName") = DLookup("FormName", "EmployeeAccess", "EmployeeTypeId=" & TempVars("EmployeeType") & " And HasAccess = " & True & " ")

DoCmd.OpenForm TempVars("FormName")