Office中国论坛/Access中国论坛

标题: 如何控制不同登陆用户的权限 [打印本页]

作者: 哥们儿    时间: 2002-11-11 04:17
标题: 如何控制不同登陆用户的权限
我做了一个数据库,用户可以根据密码登陆,如何控制用户浏览数据库的权限
作者: 九阳先生    时间: 2002-11-11 05:48
我一般是不让用户看到数据库,只看到自己允许看到的界面。做法是在Autoexec宏中调用一个设置主窗体的函数,在此函数中根据不同用户指定不同的主界面。
作者: 哥们儿    时间: 2002-11-19 05:24
具体怎么做,能给出代码吗
作者: 九阳先生    时间: 2002-11-19 06:03
标题: 如此:
Function SetMainSwitchBoard()
   
    Select Case UserType()
   
    Case "Other"
        MsgBox "You don't have access to payroll system!"
        DoCmd.Quit
   
    Case "HR_Operator"
        Application.SetOption "Built-In ToolBars Available", False
        Application.SetOption "Can Customize Toolbars", False
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "MyKeyHandle"
        Application.MenuBar = "MyMenuBar"
        DoCmd.OpenForm "MainSwitchBoard_HR"
   
    Case "ayroll_Operator"
        Application.SetOption "Built-In ToolBars Available", False
        Application.SetOption "Can Customize Toolbars", False
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "MyKeyHandle"
        Application.MenuBar = "MyMenuBar"
        DoCmd.OpenForm "MainSwitchBoard_Payroll"
   
    Case "Operator"
        Application.SetOption "Built-In ToolBars Available", False
        Application.SetOption "Can Customize Toolbars", False
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "MyKeyHandle"
        Application.MenuBar = "MyMenuBar"
        DoCmd.OpenForm "MainSwitchBoard_admin"
   
    Case "Admin"
        Application.SetOption "Built-In ToolBars Available", True
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "AutoKeys"
        Application.SetOption "Can Customize Toolbars", True
        DoCmd.OpenForm "MainSwitchBoard_Admin"
   
    Case "Vacation"
        Application.SetOption "Built-In ToolBars Available", False
        Application.SetOption "Can Customize Toolbars", False
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "MyKeyHandle"
        Application.MenuBar = "MyMenuBar"
        DoCmd.OpenForm "MainSwitchBoard_Vacation"
   
    Case "Finance_Operator", "Finance_Inquiry"
        Application.SetOption "Built-In ToolBars Available", False
        Application.SetOption "Can Customize Toolbars", False
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "MyKeyHandle"
        Application.MenuBar = "MyMenuBar"
        DoCmd.OpenForm "MainSwitchBoard_Journal"

    Case "Finance_Admin"
        Application.SetOption "Built-In ToolBars Available", False
        Application.SetOption "Can Customize Toolbars", False
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "MyKeyHandle"
        Application.MenuBar = "MyMenuBar"
        DoCmd.OpenForm "MainSwitchBoard_Finance"
   
    Case "HR_Inquiry"
        Application.SetOption "Built-In ToolBars Available", False
        Application.SetOption "Can Customize Toolbars", False
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "MyKeyHandle"
        Application.MenuBar = "MyMenuBar"
        DoCmd.OpenForm "MainSwitchBoard_HR_Inquiry"
   
    Case "ayroll_Inquiry"
        Application.SetOption "Built-In ToolBars Available", False
        Application.SetOption "Can Customize Toolbars", False
        DoCmd.ShowToolbar "MyToolBar", A_TOOLBAR_YES
        Application.SetOption "Key Assignment Macro", "MyKeyHandle"
        Application.MenuBar = "MyMenuBar"
        DoCmd.OpenForm "MainSwitchBoard_Payroll_Inquiry"
        
    Case Else
        MsgBox "You don't have access to payroll system!"
        DoCmd.Quit
   
    End Select
   
   
End Function

Function UserType()
On Error GoTo Err_userType

    Dim usrCurUser As User
    Dim oneGroup As Group
    Dim blnAdmin, blnInquiry, blnOperator, blnHR, blnPayroll, blnFinance, blnVacation, blnFinanceAdmin As Boolean
    Dim strResult As String
   
    'Set usrCurUser = CurrentUser()
    If CurrentUser() = "HRMS_Admin" Then
        UserType = "admin"
        GoTo Exit_UserType
    End If
   

作者: CNSHSF    时间: 2002-11-19 16:43
标题: 主意不错
这个主意很不错。不过我研究过ACCESS里的权限问题,我觉得也可以解决吧。对于每个表窗体查询的操作也可以设置权限。只是有点麻烦。楼上仁兄的源代码可以实现哪些功能啊?请不吝赐教!多谢。[em19]
作者: 九阳先生    时间: 2002-11-19 19:55
对每个数据库对象进行授权确实很麻烦。我一般是将所有用户都加入一个授权组,在上例中没有体现出来,将此组授予表,查询,窗体的修改数据权限,而对窗体,报表,宏只可运行。然后再创建一些用户分类组,如上例中的"ayroll","HR","Inquiry","Operator","payroll"/"HR"表示该用户可以使用Payroll/HR的功能,"Inquiry"/"Operator"表示该用户只可以查询/维护相应的数据,但其实这些组在Access中不授予任何权限,只是为了在进入程序时为其指定事先做好的主窗体。
这样可以保证该用户只可以看到自己可以使用的功能(用户接触不到数据库)。这种分类方法适合于用户比较多的系统。
作者: CNSHSF    时间: 2002-11-20 18:40
是啊是啊。很好的做法。我们这里在考虑数据的分类操作使用的问题。我想设置权限应该是比较好的办法。:)




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3