在 Access 2013 中取消子窗体中的更改
Cancel changes in a subform in Access 2013
我在表单中有一个子表单。默认情况下,当我更改子窗体中的一条记录时,当我在子窗体外单击时,该记录会自动保存。我在主窗体上添加了一个手动保存窗体和子窗体记录的按钮,所以我取消了子窗体退出时的保存以避免写冲突。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.Undo
Cancel = True
End Sub
使用此代码,在子表单外部单击不仅会取消保存,还会清除我在子表单中输入的所有内容。这意味着我必须先取消子表单更改才能保存表单。
如何取消子表单中的自动保存,同时保留任何编辑直到它们退出主表单?
Me.Undo
将撤消(子)表单中的任何数据编辑。只需删除该行。
这个:
Cancel = True
足以取消更新。
现在你的下一部分要求更难解决了。每当您在 Access 中留下数据绑定表单时,更改将被保存。
要防止这种情况,您有两个选择。
1.) 要么使用未绑定到任何记录源的未绑定表单。您需要使用 query/recordset 读取数据,将其写入表单的控件,然后使用 VBA 将任何修改后的值写入数据库。 - 这不适用于 continuous/datasheet 表格
2.) 或者您创建一个与主 table 具有相同结构的临时 table 并将子表单绑定到该临时 table。当您的(主)窗体打开时,您将子窗体的所有相关记录复制到临时 table。如果主窗体是 closed/exited,则使用临时 table.
的任何更改更新真实数据 table
我在表单中有一个子表单。默认情况下,当我更改子窗体中的一条记录时,当我在子窗体外单击时,该记录会自动保存。我在主窗体上添加了一个手动保存窗体和子窗体记录的按钮,所以我取消了子窗体退出时的保存以避免写冲突。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.Undo
Cancel = True
End Sub
使用此代码,在子表单外部单击不仅会取消保存,还会清除我在子表单中输入的所有内容。这意味着我必须先取消子表单更改才能保存表单。
如何取消子表单中的自动保存,同时保留任何编辑直到它们退出主表单?
Me.Undo
将撤消(子)表单中的任何数据编辑。只需删除该行。
这个:
Cancel = True
足以取消更新。
现在你的下一部分要求更难解决了。每当您在 Access 中留下数据绑定表单时,更改将被保存。
要防止这种情况,您有两个选择。
1.) 要么使用未绑定到任何记录源的未绑定表单。您需要使用 query/recordset 读取数据,将其写入表单的控件,然后使用 VBA 将任何修改后的值写入数据库。 - 这不适用于 continuous/datasheet 表格
2.) 或者您创建一个与主 table 具有相同结构的临时 table 并将子表单绑定到该临时 table。当您的(主)窗体打开时,您将子窗体的所有相关记录复制到临时 table。如果主窗体是 closed/exited,则使用临时 table.
的任何更改更新真实数据 table