MS Access 2010 中是否可以限制用户可以在数据视图表单中看到的记录?例如,用户 A 应该只看到部门 A 的记录,而用户 B 应该只看到部门 B 的记录。
问问题
6698 次
1 回答
1
创建一个使用您的业务规则作为约束的查询,以仅返回应允许用户访问的行的子集。然后使用该查询作为其记录源来构建您的表单。
该方法取决于两个条件:
- 您有一种方法来识别当前用户。
- 您可以将业务规则实现为查询
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 回答