Access 2010:用户登录或限制用户记录

时间:2012-12-05 17:00:33

标签: ms-access

MS Access 2010中是否可以限制用户在数据视图表单中可以看到的记录?例如,用户A应仅查看来自部门A的记录,而用户B应仅查看来自部门B的记录。

1 个答案:

答案 0 :(得分:1)

创建一个查询,该查询使用您的业务规则作为约束,仅返回应允许用户访问的行的子集。然后使用该查询构建表单作为其记录源。

这种方法取决于两个条件:

  1. 您有一种识别当前用户的方法。
  2. 您可以将业务规则实现为查询WHERE子句。
  3. 您可以使用API​​方法获取当前用户的Windows帐户名。请参阅Get Login name上的示例。如果您的db文件是MDB格式,则可以设置ULS(用户级安全性),并使用CurrentUser()函数获取Access用户名。较新的ACCDB格式不支持ULS,但Access 2010仍然可以使用MDB格式的db文件。

    这些方法中的任何一种都可以满足第一个条件。您还可以开发代码来管理自定义用户帐户,但这似乎对我来说太多额外的工作。

    这样的事情可以将您的业务规则实现为查询WHERE子句。它使用上面链接中的fOSUserName()函数。

    WHERE
        department = Switch(
            fOSUserName() = 'User A', 'department A',
            fOSUserName() = 'User B', 'department B')
    

    然而,一种不那么脆弱的方法是内连接一个表,该表包含与应该允许查看的部门匹配的用户名。