我在表单中有一个子表单。默认情况下,当我更改子窗体中的记录时,当我在子窗体外单击时,记录将自动保存。我在主窗体上添加了一个按钮,用于手动保存窗体和子窗体中的记录,因此我取消了保存在子窗体上以避免写入冲突。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.Undo
Cancel = True
End Sub
使用此代码,单击子窗体外部不仅会取消保存,还会清除我在子窗体中输入的任何内容。这意味着在没有首先取消子表单更改的情况下,我无法保存表单。
如何在保留任何编辑的同时取消子窗体中的自动保存,直到它们退出主窗体?
答案 0 :(得分:5)
Me.Undo
将撤消(子)表单中的任何数据编辑。只需删除该行。
此:
Cancel = True
足以取消更新。
现在,您需求的下一部分要难以解决。每当您在Access中保留数据绑定表单时,更改将被保存。
为了防止这种情况,您有两种选择。
1。)您使用未绑定到任何记录源的未绑定表单。您需要使用查询/记录集读取数据,将其写入表单的控件,然后使用VBA将任何已修改的值写入数据库。 - 这不适用于连续/数据表格式
2。)或者您创建一个与主表结构相同的临时表,并将子表单绑定到该临时表。打开(主)表单后,将子表单的所有相关记录复制到临时表中。如果关闭/退出主窗体,则使用临时表中的任何更改来更新实际数据表。