在 Microsoft Access 窗体中,只要当前记录发生更改,绑定(bind)控件中的任何更改都会以静默方式保存到数据库表中。这很好,但我不希望在用户关闭表单时发生这种情况,因为这与许多人的期望正好相反。
最好的例子是,当您尝试关闭未保存更改的 excel 文件时,它会询问是否应丢弃更改。这正是我试图在 Access 中实现的,但找不到任何方法来捕获 VBA 中的关闭按钮事件。
表单的 Unload 事件是当有人单击关闭按钮时触发的第一个事件,但此时更改已写入数据库。
这是可能的,还是我必须创建自己的关闭按钮?我很乐意为这样的琐碎事情编写大量代码,但我讨厌不得不使 GUI 困惑。
最佳答案
您必须使用 Form_BeforeUpdate
事件。下面是一个例子;但是它确实会创建一条典型的警告消息:“此时您无法保存此记录。Microsoft Access 在尝试保存记录时可能遇到错误......” - 取决于您的数据库设置。您可以使用下面的简单解决方法来避免显示该消息。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Cancel = True
'Or even better you can check certain fields here (If Then...)
End Sub
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 2169 Then
Response = True
End If
End Sub
关于vba - 防止关闭按钮在 MS Access 中保存记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953949/