1

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

4

1 回答 1

1

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

该方法取决于两个条件:

  1. 您有一种方法来识别当前用户。
  2. 您可以将业务规则实现为查询WHERE子句。

您可以使用 API 方法获取当前用户的 Windows 帐户名称。请参阅获取登录名中的示例。如果你的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')

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

于 2012-12-05T17:28:50.557 回答