Ms access 具有访问级别的MS Access 2010登录表单

Ms access 具有访问级别的MS Access 2010登录表单,ms-access,authentication,vba,ms-access-2010,Ms Access,Authentication,Vba,Ms Access 2010,我的管理层需要一个access数据库,它可以控制哪些用户可以看到表单上的特定字段。例如,如果经理登录,则表单将显示“绩效评级”字段。对于任何其他用户,性能评级字段将不可见 到目前为止,以下是我的一些选择: 1) 使用VBA检测access应用程序的用户名,如果是其管理员的名称,则文本框可见 2) 使用要求用户登录的用户名引用表。具有特殊访问权限的用户将看到文本框 3) 在表单上有一个特殊的小按钮,如果有人点击,它将加载一个小的密码对话框,然后将文本设置为可见 哪个选项最难实现?我已经实现了选项n

我的管理层需要一个access数据库,它可以控制哪些用户可以看到表单上的特定字段。例如,如果经理登录,则表单将显示“绩效评级”字段。对于任何其他用户,性能评级字段将不可见

到目前为止,以下是我的一些选择:

1) 使用VBA检测access应用程序的用户名,如果是其管理员的名称,则文本框可见

2) 使用要求用户登录的用户名引用表。具有特殊访问权限的用户将看到文本框

3) 在表单上有一个特殊的小按钮,如果有人点击,它将加载一个小的密码对话框,然后将文本设置为可见


哪个选项最难实现?

我已经实现了选项nr 1和2,它们非常容易构建。 方案3似乎同样困难

在我的工作环境中,问题是哪一个选项(帐户)维护率低,哪一个对用户要求不高

从这个角度来看,1号选项更加成功


(我宁愿构建不同的表单,而不是打开/关闭字段的视图设置)

使用登录表单获取用户特定信息的想法在互联网上随处可见。我建议将你的三个想法结合起来,这才是完美的解决方案

对于两种方法中的任何一种(1和2),您首先需要一个包含信息的表。这个表不需要太复杂(至少现在不需要)。表格应具有以下结构:

tbl_Employees
-------------
EmpID       -   Auto Number -   PK
EmpNam      -   Text
EmpUserName -   Text
EmpPassword -   Text        -   Input Mask (If required)
IsManager   -   Yes/No      -   Default - No 
然后您必须创建一个表单,一个基本表单,它将有三个控件、两个文本框和一个按钮。第一个文本框用于输入员工用户名,第二个文本框用于输入密码。最后是一个按钮,魔法就在它后面发生。按钮后面的代码(简化)将是与以下内容类似的代码

Private Sub LogInBtn_Click()
On Error GoTo errOccured
    Dim eQryStr As String, empRS As DAO.Recordset

    eQryStr = "SELECT EmpID, EmpUserName, EmpPassword, IsManager FROM tbl_Employees WHERE EmpUserName = '" & Me.UserNameTxt & "'"

    Set empRS = CurrentDb.OpenRecordset(eQryStr)

    If empRS.RecordCount <> 0 Then
        If Me.PwdTxt = empRS!EmpPassword Then
            If empRS!IsManager Then
                DoCmd.OpenForm "ManagerForm"
            Else
                DoCmd.OpenForm "EmployeeForm"
            End If
            Me.Visible = False
        Else
            wrongEntry "Password"
        End If
    Else
        wrongEntry "User Name"
    End If
exitOnError:
    Set empRS = Nothing
    Exit Sub
errOccured:
    wrongEntry "User Name/Password"
    Resume exitOnError
End Sub

Private Sub wrongEntry(entityStr As String)
    MsgBox entityStr & " is incorrect (OR) omitted, please check again.", vbCritical
End Sub
PS:隐藏文本控件应设置为不可见,最好以当前事件的形式设置

我希望这有帮助

Private Sub AllowAccessButton_Click()
    If Call_Password_Box = "yourPassword" Then
        Me.yourHiddenTextBox.Visible = True
    Else
        MsgBox "Sorry you are not authorised to vies this information (OR) Incorrect Password", vbCritical
    End If
End Sub