Ms access Access 2010:用户登录或将记录限制为用户
在MS Access 2010中,是否可以限制用户可以在dataview表单中看到的记录?例如,用户A应仅查看来自部门A的记录,而用户B应仅查看来自部门B的记录。创建一个查询,该查询使用您的业务规则作为约束,仅返回用户应允许访问的行子集。然后使用该查询作为记录源构建表单 该方法取决于两个条件:Ms access Access 2010:用户登录或将记录限制为用户,ms-access,Ms Access,在MS Access 2010中,是否可以限制用户可以在dataview表单中看到的记录?例如,用户A应仅查看来自部门A的记录,而用户B应仅查看来自部门B的记录。创建一个查询,该查询使用您的业务规则作为约束,仅返回用户应允许访问的行子集。然后使用该查询作为记录源构建表单 该方法取决于两个条件: 您有一个识别当前用户的方法 您可以将业务规则实现为查询WHERE子句 您可以使用API方法获取当前用户的Windows帐户名。请参阅上的示例。如果您的db文件是MDB格式,则可以设置ULS(用户级安全),
WHERE
子句CurrentUser()
函数获取访问用户名。较新的ACCDB格式不支持ULS,但Access 2010仍可以使用MDB格式的db文件
这两种方法都可以满足第一个条件。您还可以开发代码来管理自定义用户帐户,但这对我来说似乎太多额外的工作了
类似的东西可以将您的业务规则实现为查询WHERE
子句。它使用上面链接中的fOSUserName()
函数
WHERE
department = Switch(
fOSUserName() = 'User A', 'department A',
fOSUserName() = 'User B', 'department B')
但是,一种不那么脆弱的方法是内部联接一个表,该表包含与其应允许查看的部门匹配的用户名。创建一个查询,该查询使用您的业务规则作为约束,仅返回用户应允许访问的行子集。然后使用该查询作为记录源构建表单 该方法取决于两个条件:
WHERE
子句CurrentUser()
函数获取访问用户名。较新的ACCDB格式不支持ULS,但Access 2010仍可以使用MDB格式的db文件
这两种方法都可以满足第一个条件。您还可以开发代码来管理自定义用户帐户,但这对我来说似乎太多额外的工作了
类似的东西可以将您的业务规则实现为查询WHERE
子句。它使用上面链接中的fOSUserName()
函数
WHERE
department = Switch(
fOSUserName() = 'User A', 'department A',
fOSUserName() = 'User B', 'department B')
但是,一种不那么脆弱的方法是内部联接一个表,该表包含与允许他们查看的部门匹配的用户名。非常感谢您的详细答复。明天我将试用你的方法。我有一个问题:您确定可以像在示例中那样在access查询中调用vba函数吗?或者,这只能在vba宏中实现。只要您在Access应用程序会话中运行查询,是的,您的查询就可以使用用户定义的函数。我们经常这样做。如果您将从外部访问运行查询(如从经典ASP、VBScript、Dot.Net等),则查询将无法使用UDF。。。与此相同,它不能使用某些VBA函数,如
Nz()
.Perfect。正如你所描述的那样。谢谢你的帮助。我还找到了另一种/更短的方法来获取windows登录用户名“user_name=Environ(“USERNAME”)”。请注意,Environ(“USERNAME”)
很容易被击败。用户可以打开命令窗口,将用户名更改为假值,然后从该环境开始访问。如果您关心安全性,请使用Windows API确定用户名。由于您似乎对Access有丰富的经验,我想问您是否有对用户保护/隐藏数据库结构的想法:非常感谢您的详细答复。明天我将试用你的方法。我有一个问题:您确定可以像在示例中那样在access查询中调用vba函数吗?或者,这只能在vba宏中实现。只要您在Access应用程序会话中运行查询,是的,您的查询就可以使用用户定义的函数。我们经常这样做。如果您将从外部访问运行查询(如从经典ASP、VBScript、Dot.Net等),则查询将无法使用UDF。。。与此相同,它不能使用某些VBA函数,如Nz()
.Perfect。正如你所描述的那样。谢谢你的帮助。我还找到了另一种/更短的方法来获取windows登录用户名“user_name=Environ(“USERNAME”)”。请注意,Environ(“USERNAME”)
很容易被击败。用户可以打开命令窗口,将用户名更改为假值,然后从该环境开始访问。如果您关心安全性,请使用Windows API确定用户名。由于您似乎在Access方面有丰富的经验,我想问您是否有对用户保护/隐藏数据库结构的想法: