【问题标题】:Access Control Using User Rights & Groups使用用户权限和组的访问控制
【发布时间】:2013-12-25 16:36:53
【问题描述】:

我有一个使用 MS Access 2007 从头开始​​构建的数据库,其中 VBA 运行表单、报告和数据表之间的所有脚本(SQL、数据验证等)。我正在尝试在数据库的登录页面上放置一个用户访问实现系统。用户可以是 3 个组中的 1 个,管理员(进入系统设置、用户管理)、官员(发布数据)或经理(查看数据)。 用户链接到具有以下内容的用户组表:

ID    UserGroupDescription HideOps  HideAdmin HideManager  
1     Administrator          TRUE    FALSE       TRUE  
2     Operations            FALSE    TRUE        TRUE  
3     Manager                TRUE    TRUE        FALSE  

我想在登录页面上仅显示每个组的快捷方式(使用标签的 .visible 属性),但我被困在如何管理此数据的查找而不仅在 case 语句中硬编码 3 个组(这意味着我已经编写了要添加的任何其他组的代码)。
有没有办法检查显示哪个标签是动态的?而使用sql用户用户组的方式。

【问题讨论】:

  • 非常感谢有关如何更好地做到这一点的建议。我目前没有使用 MS Access 原生函数,只是 vba
  • @HansUp 我有一个用户表,它有一个映射的用户组 ID,在登录时,用户 ID 和用户组 ID 被放入登录页面打开时加载的临时变量中
  • 好。在登录页面表单的表单加载事件中,根据 user_group 表的查询打开一个DAO.Recordset。然后使用记录集的 HideOps、HideAdmin 和 HideManager 值来调整这些表单控件的 Visible 属性。这一切有意义吗?如果没有,您的第一个症结在哪里?
  • 太棒了,我没想过使用记录集,我试图直接更改控件。现在我可以使用它了,谢谢@HansUp
  • 第一次使用效果很好。如果您将您的评论作为答案,我将立即接受它作为答案。我很感激帮助。非常感谢

标签: sql ms-access ms-access-2007 vba


【解决方案1】:

在登录页面表单的表单加载事件中,根据user_group 表的查询打开DAO.Recordset。然后使用记录集的HideOpsHideAdminHideManager 值来调整这些表单控件的可见属性。

【讨论】:

    【解决方案2】:

    我使用大标签为每个组隐藏所有未经授权的部分(lblHideAdmin 和 lblHideOps):-)。我设法在登录后使用 TempVar 变量传递用户组,这在起始页面加载事件中加载。
    然后使用如下所示的 dlookup 提取变量隐藏/显示选项。

    UserGroupId = TempVars![UserGroupId]
    Me.lblHideAdmin.Visible = True
    Me.lblHideOps.Visible = True
    
    OpStatus = True
    OpStatus = DLookup("[hideops]", "tblUserGroupDetails", "Id = " & UserGroupId)
    Me.lblHideOps.Visible = OpStatus
    
    AdminStatus = True
    AdminStatus = DLookup("[HideAdmin]", "tblUserGroupDetails", "Id = " & UserGroupId)
    Me.lblHideAdmin.Visible = AdminStatus
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      相关资源
      最近更新 更多