vba - 访问 VBA,无法关闭当前窗体。错误 2585 处理表单或报表事件时无法执行此操作
问题描述
这应该很简单但是!
我的打开表单显示一个下拉列表来选择用户名(从选择查询中填充)和一个未绑定的文本框来输入密码。密码与固定字符串进行比较,如果匹配,我需要关闭此表单并打开主菜单。如果您不知道密码,还有一个按钮可以关闭整个系统。选项卡顺序是下拉菜单、文本框、退出按钮。
经过AfterUpdate,BeforeUpdate,lostFocus的多种变体后,我将这段代码放在退出按钮的Got Focus事件中,这样从密码框退出就会触发它。每个函数都将焦点设置回适当的不正确条目,但如果一切正确,程序将转到最后两行。
Private Sub btnExitAll_GotFocus()
If PasswordNotOk() Then Exit Sub
If UserNotOK() Then Exit Sub
DoCmd.OpenForm "Main Menu"
DoCmd.Close acForm, "Opening screen", acSaveNo
End sub
“关闭”行以 2585 失败。我尝试颠倒最后两行的顺序。我什至将最后两行放在临时按钮的单击事件中,它们完全按预期工作!所以我尝试从这个 sub 调用该按钮的单击事件,但得到了同样的错误。我试过卸载我,但会引发错误 361 无法加载或卸载此对象,但我无法让此表单自行关闭。如果有帮助,当我尝试在 UNBOUD 文本框的更新前事件中执行此操作时,我收到错误消息,提示我在保存数据之前无法执行此操作。
请问有人我做错了什么?
解决方案
我正在使用Me.Name
从自身关闭表单。您可能需要在关闭之前清除更改。
Private Sub btnExitAll_Click()
If PasswordNotOk() Then Exit Sub
If UserNotOK() Then Exit Sub
DoCmd.OpenForm "Main Menu"
' Discard changes so we can close without saving
If Me.Dirty = True Then
Me.Undo
End If
DoCmd.Close acForm, Me.Name, acSaveNo
End Sub
推荐阅读
- ios - URLSessionWebSocketTask:致命错误:只有消息或错误之一应为 nil
- docker - 有没有快速查看.dockerignore效果的命令?
- java - Java 11 中的 Jasperreport。java.lang.NoClassDefFoundError: 无法初始化类 net.sf.jasperreports.engine.util.JRStyledTextParser
- node.js - 使用代理传递 apache 的 https 域上的套接字 io
- github - 如何更改 github 拉取请求的默认标题
- r - 在 Shiny DT 中,当有很多 ScrollX=TRUE 的列时,焦点会丢失
- php - 如何通过 Laravel Query builder 制作 sql foreach 循环?
- python - 尝试在 Windows 上安装 opencv-python 时出错
- r - 有没有办法在 MLR 框架中为 XgBoost 设置“基本边距”?
- linux - 带有特殊字符的 sendmail 身份验证问题