如何在MS Access数据库中为特定表单创建专属登录访问功能
在MS Access中为特定表单设置单用户登录权限的实现步骤
1. 创建登录窗口表单
- 新建空白表单,添加以下控件:
- 文本框(命名为
txtUsername),用于输入用户名 - 文本框(命名为
txtPassword),用于输入密码;右键该文本框→属性→数据→输入掩码,选择「密码」类型,输入内容会显示为星号 - 命令按钮(命名为
cmdLogin),标题设为「登录」 - 命令按钮(命名为
cmdCancel),标题设为「取消」
- 文本框(命名为
2. 编写登录验证VBA代码
双击「登录」按钮打开VBA编辑器,粘贴以下代码(替换注释中的用户名、密码和目标表单名称):
Private Sub cmdLogin_Click() ' 替换为你指定的授权用户名和密码 Const ALLOWED_USER As String = "专属用户名" Const ALLOWED_PWD As String = "专属密码" If Me.txtUsername.Value = ALLOWED_USER And Me.txtPassword.Value = ALLOWED_PWD Then ' 验证通过,标记已授权并打开目标表单 gblIsAuthenticated = True DoCmd.OpenForm "需要权限的表单名称" DoCmd.Close acForm, Me.Name ' 关闭登录窗口 Else MsgBox "用户名或密码错误,请重试。", vbExclamation, "登录失败" Me.txtUsername.SetFocus Me.txtUsername.Text = "" Me.txtPassword.Text = "" End If End Sub Private Sub cmdCancel_Click() ' 取消登录,关闭窗口 DoCmd.Close acForm, Me.Name End Sub
3. 添加全局授权标记与表单访问控制
- 新建一个标准模块,定义全局变量用于标记登录状态:
Public gblIsAuthenticated As Boolean
- 打开需要权限的目标表单,进入「打开」事件的代码编辑器,添加验证逻辑防止直接访问:
Private Sub Form_Open(Cancel As Integer) ' 未授权则取消打开表单 If Not gblIsAuthenticated Then Cancel = True MsgBox "请通过登录窗口访问此表单。", vbExclamation, "无权限" DoCmd.OpenForm "登录窗口表单名称" End If End Sub
4. 限制数据库操作权限
- 隐藏导航窗格:打开「文件」→「选项」→「当前数据库」,取消勾选「显示导航窗格」;也可以通过AutoExec函数自动隐藏,在标准模块中添加:
Function AutoExec() DoCmd.NavigateTo "acNavigationCategoryObjectType" DoCmd.RunCommand acCmdWindowHide End Function
- 设置启动选项:在「当前数据库」设置中,将「显示窗体」选择为你的登录窗口表单,取消勾选「允许全部菜单」和「允许默认快捷菜单」,避免用户通过菜单绕过登录。
内容的提问来源于stack exchange,提问作者KApril
相关产品推荐
相关产品推荐

