Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS访问限制表/窗体访问_Ms Access - Fatal编程技术网

Ms access MS访问限制表/窗体访问

Ms access MS访问限制表/窗体访问,ms-access,Ms Access,是否有一种简单的方法允许用户只编辑他们创建的表单条目,并且只允许管理员编辑表/所有表单?我需要我的全体员工能够添加和编辑他们自己的会议,而不能编辑其他员工的会议 这并不简单。。。Access过去内置了各种安全功能(现在仍然如此),但现在已经被弃用了,因此如果您的用户想要并且知道如何使用,他们可以绕过您的表单。Access确实不是一个安全的平台,因此您尝试构建的任何安全性都只能防止意外错误,甚至不能防止半心半意的攻击 无论如何,您需要捕获每个用户的用户ID(Access无法在开箱即用的情况下完成此

是否有一种简单的方法允许用户只编辑他们创建的表单条目,并且只允许管理员编辑表/所有表单?我需要我的全体员工能够添加和编辑他们自己的会议,而不能编辑其他员工的会议

这并不简单。。。Access过去内置了各种安全功能(现在仍然如此),但现在已经被弃用了,因此如果您的用户想要并且知道如何使用,他们可以绕过您的表单。Access确实不是一个安全的平台,因此您尝试构建的任何安全性都只能防止意外错误,甚至不能防止半心半意的攻击

无论如何,您需要捕获每个用户的用户ID(Access无法在开箱即用的情况下完成此操作;此函数将完成此操作):

然后,您需要将其用作表/表单中
创建用户
文本字段的默认值

您需要有一个
tbl_Users
表,至少有一个
UserID
字段,其中包含用户的
WSUserName()
,以及一个
isadmin
是/否字段

然后,在您的表单中,在当前的
表单
事件处理程序中,您需要:

Me.AllowEdits = DLookup("IsAdministrator", "tbl_Users", "UserID = " & WSUserName()) Or Me.Creating_User = WSUserName()
Me.AllowDeletions = DLookup("IsAdministrator", "tbl_Users", "UserID = " & WSUserName()) Or Me.Creating_User = WSUserName()
这将阻止用户编辑/删除其他人的记录,同时允许管理员编辑/删除任何人的记录。任何人都可以添加记录,由于
创建用户
字段默认为
WSUserName()
,并且应该是只读的,因此只有他们(或管理员)才能对其执行任何操作

这种方法的唯一问题是,它假定您的电脑没有共享登录。如果电脑是早上登录的,任何人都可以走过来开始使用它,你将不得不使用另一种方法,但是这种方法对于用户使用自己的ID登录、完成工作、然后注销,然后其他人可以登录的电脑来说都很好用

Me.AllowEdits = DLookup("IsAdministrator", "tbl_Users", "UserID = " & WSUserName()) Or Me.Creating_User = WSUserName()
Me.AllowDeletions = DLookup("IsAdministrator", "tbl_Users", "UserID = " & WSUserName()) Or Me.Creating_User = WSUserName()