Forms MS-ACCESS如何修改所有表单';具有模块的按键事件-可选禁用F11键隐藏/取消隐藏导航窗格

Forms MS-ACCESS如何修改所有表单';具有模块的按键事件-可选禁用F11键隐藏/取消隐藏导航窗格,forms,ms-access,module,keydown,Forms,Ms Access,Module,Keydown,我有一个数据库和一些表格 DB以一个登录表单开始,该表单设置一个TempVars!CurrentSecurity.Value基于登录的用户(作为管理员或普通用户) 所有其他表单都有一个Form_KeyDown事件,该事件将调用一个模块,其中有一个函数/子函数必须根据当前临时变量更改F11(隐藏/显示导航窗格)的行为!CurrentSecurity.Value(管理员/用户) 例如:如果当前登录的帐户是管理员,则启用F11密钥,否则不启用 所以我试着这样做: 在形式_KeyDown事件中: Pri

我有一个数据库和一些表格

DB以一个登录表单开始,该表单设置一个
TempVars!CurrentSecurity.Value
基于登录的用户(作为
管理员
或普通
用户

所有其他表单都有一个
Form_KeyDown
事件,该事件将调用一个模块,其中有一个函数/子函数必须根据当前
临时变量更改F11(隐藏/显示导航窗格)的行为!CurrentSecurity.Value
(管理员/用户)

例如:如果当前登录的帐户是管理员,则启用F11密钥,否则不启用

所以我试着这样做:

在形式_KeyDown事件中:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
CheckF11 (KeyCode)
end sub
在模块中:

Public Function CheckF11(KeyCode As Integer)
If TempVars!CurrentSecurity.Value <> "Admin" Then
 If KeyCode = 122 Then KeyCode = 0
End If
End Function
公共函数CheckF11(键码为整数)
如果是临时工!CurrentSecurity.Value“Admin”然后
如果KeyCode=122,则KeyCode=0
如果结束
端函数

表单的KeyPreview属性已设置为True,但无论如何都不起作用。。帮助功能必须将结果发送回调用过程。
公共函数并没有真正减少代码

这项工作:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = CheckF11(KeyCode)
End Sub
公共函数CheckF11(intKey为整数)
如果是临时工!CurrentSecurity.Value“Admin”然后
如果intKey=122,则选中F11=0
如果结束
端函数

管理员是db开发者吗?只有开发人员才能看到导航窗格。开发人员应该了解打开时的shift键旁路。我禁用所有AccessSpecialKeys、导航窗格、右键单击菜单,并在db选项中设置自定义功能区。我在打开数据库时使用shift键旁路。管理员用户不是开发人员,即使他们有一些其他用户没有的附加权限,他们仍然没有开发人员可访问性。我知道,用户可能会了解shift key bypass,如果这是一个问题,可能需要使用不同的数据库平台,如SQLServerExpress。Admin是一个名为Accounts的表字段中的字符串值,登录表单会检查当前登录的用户是否与用户名和密码值匹配,然后检查相对安全级别(管理员/用户)并提供给TempVars!CurrentSecurity.Value相对字符串我不知道打开时的shift键旁路,但正如您所说,这可以由普通用户学习,因此我认为我所描述的控制行为要好得多不需要F11来打开/关闭导航窗格。如果窗格栏可见,只需单击它。您的代码在在我返回到管理员值时,它似乎存储在
CheckF11=0
中,因此我添加了
Else CheckF11=122
非常感谢!为什么登录的用户会更改?因为我想从不同的工作站作为管理员登录,以便进行小的更改,或者不同的用户可以登录到同一工作站。但不是每个用户都可以吗为拆分数据库打开其自己的前端副本?此数据库上的所有操作都会被跟踪到日志表中,其中包含当前用户帐户凭据,用户修改的报告和记录将被跟踪。因此,例如,如果工作站的操作员(用户)将发生更改,他/她可以使用其帐户进行日志记录,以便正确跟踪!
Public Function CheckF11(intKey As Integer)
If TempVars!CurrentSecurity.Value <> "Admin" Then
 If intKey = 122 Then CheckF11 = 0
End If
End Function