拦截Microsoft Access中的自动保存

时间:2011-08-23 15:48:41

标签: ms-access vba access-vba

我有一个MS-Access表单,其中包含3个级别的嵌套表单。第二种形式有两个文本框 - 名字和姓氏。出于某些奇怪的原因,只要用户开始输入名字,表单就会尝试触发保存。

如何确定触发保存的人/内容/位置?

我放入一个Form_BeforeInsert处理程序,我可以在那里拦截,但是调用堆栈并不表示事件被触发的位置。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

当您将焦点从父窗体上的控件切换到子窗体上的控件时,如果父窗体的任何绑定控件包含未保存的值,则该焦点开关会触发父窗体当前记录的保存。我认为没有办法阻止或推迟这种行为。您必须允许记录保存或放弃更改。您可以截取更新前的表单事件,询问用户是保存还是丢弃,如@woliveirajr建议的那样。你可以为Before Insert事件做同样的事情。

答案 1 :(得分:1)

来自http://help.lockergnome.com/office2/Disable-AutoSave-MS-Access--ftopict149090.html

  

“自动保存”是指将焦点更改为时保存的记录   另一个记录?如果是这样,那么就没有“关闭它”的内置方式。   但是,在表单的BeforeUpdate事件中放置一些代码很容易:

If MsgBox("Do you want to save changes?", vbYesNo) = vbNo Then
Cancel = True
Me.Undo
End If 

也许您不想要求用户保存它,因此Me.Undo行会执行此操作。