2011-08-23 112 views
2

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

如何确定保存触发的位置?

我把一个Form_BeforeInsert处理程序,我可以在那里拦截,但调用堆栈并不表明事件是从哪里触发的。

任何想法?

回答

2

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

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线将做到这一点。