vba - 防止关闭按钮在 MS Access 中保存记录

标签 vba ms-access-2007

在 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/

相关文章:

excel - 如何删除工作表并插入具有相同名称的同一张工作表,但同时防止公式中引用错误?

vba - Access VBA 将字段名称作为记录

sql - 如何选择最大值

vba - 未加载以编程方式安装的 Excel 加载项

excel - 在 Excel 中将行从一张工作表复制并粘贴到另一张工作表

java - 在 Java 中连接到 Microsoft Access 2007 数据库的正确方法是什么?

ms-access - 保存用于从MS Access 2007到MS SQL Server的ODBC连接的密码

sql - MS-Access 中同一字段中两种类型值的计数

php - 我的服务器上的文件在哪里?

vba - 将 Word 表格转换为 Excel 数组