MS Access 2010中是否可以限制用户在数据视图表单中可以看到的记录?例如,用户A应仅查看来自部门A的记录,而用户B应仅查看来自部门B的记录。
答案 0 :(得分:1)
创建一个查询,该查询使用您的业务规则作为约束,仅返回应允许用户访问的行的子集。然后使用该查询构建表单作为其记录源。
这种方法取决于两个条件:
WHERE
子句。您可以使用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')
然而,一种不那么脆弱的方法是内连接一个表,该表包含与应该允许查看的部门匹配的用户名。