Vba ';撤消';在子窗体的卸载事件中

Vba ';撤消';在子窗体的卸载事件中,vba,ms-access,Vba,Ms Access,我希望用户确认他对记录所做的更改,所以我在表单中添加了“保存”和“放弃”按钮。Discard按钮运行DoCmd.RunCommand(acCmdUndo),工作正常。我还将这一行添加到表单的Form_Unload事件中,以在退出之前撤消未保存的更改,这也可以正常工作 问题是当我在另一个(主)表单中将此表单(比如form1)用作子表单时。当我点击主窗体的关闭(X)按钮时,vba在form1的form_Unload事件下给出此错误: 运行时错误“2046”:命令或操作“撤消”现在不可用 我还尝试了M

我希望用户确认他对记录所做的更改,所以我在表单中添加了“保存”和“放弃”按钮。Discard按钮运行
DoCmd.RunCommand(acCmdUndo)
,工作正常。我还将这一行添加到表单的Form_Unload事件中,以在退出之前撤消未保存的更改,这也可以正常工作

问题是当我在另一个(主)表单中将此表单(比如form1)用作子表单时。当我点击主窗体的关闭(X)按钮时,vba在form1的form_Unload事件下给出此错误:

运行时错误“2046”:命令或操作“撤消”现在不可用

我还尝试了
Me.Undo
,但显然它在卸载事件中根本不起作用


因此,我的具体问题是,在主窗体的卸载或退出事件中,如何放弃子窗体中记录的未保存更改。

当按下X按钮时,似乎所有内容都被保存;并且不提供撤消<代码>表单卸载太迟,无法拦截保存操作
Form\u BeforeUpdate
可以改为使用。

如果从主窗体运行
Undo
,它是否会像您希望的那样影响子窗体?我将
DoCmd.RunCommand(acCmdUndo)
添加到主窗体的卸载事件中,并给出相同的错误2046。我始终禁用X close并提供用于关闭窗体的自定义按钮。很可能,当您单击主窗体X关闭时,子窗体记录将提交到表中,并且无法再撤消。即使是这样,在执行撤消之前,也可能必须首先将焦点设置回子窗体。