我在表格里有个子表格。默认情况下,当我更改子窗体中的记录时,当我单击子窗体外部时,记录将自动保存。我在主窗体上添加了一个按钮,手动将记录保存在窗体和子窗体中,因此取消了对子窗体出口的保存,以避免写入冲突。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.Undo
Cancel = True
End Sub使用此代码,单击子窗体外部将不仅取消保存,而且将清除我在子窗体中输入的任何内容。这意味着,如果不首先取消子表单更改,我就无法保存表单。
如何取消子窗体中的自动保存,同时保持任何编辑直到退出主窗体?
发布于 2016-05-10 17:28:38
Me.Undo 将撤消(子)窗体中的任何数据编辑。把那行删掉。
这是:
Cancel = True就足以取消更新。
现在,您的下一部分需求更难解决。每当您将数据绑定表单留在Access中时,更改将被保存为。
为了防止这种情况发生,你有两个选择。
1.)要么使用未绑定到任何记录源的未绑定窗体。您需要使用查询/记录集读取数据,将其写入表单的控件,然后使用VBA将任何修改的值写入数据库。-这将不适用于连续/数据表表单
2.)或者创建一个具有与主表相同结构的临时表,并将子表单绑定到该临时表。打开(main)表单时,可以将子表单的所有相关记录复制到临时表中。如果关闭/退出主窗体,则使用临时表中的任何更改更新实际数据表。
https://stackoverflow.com/questions/37144100
复制相似问题