我有一个MS-Access表单,其中包含3个级别的嵌套表单。第二种形式有两个文本框 - 名字和姓氏。出于某些奇怪的原因,只要用户开始输入名字,表单就会尝试触发保存。
如何确定触发保存的人/内容/位置?
我放入一个Form_BeforeInsert处理程序,我可以在那里拦截,但是调用堆栈并不表示事件被触发的位置。
有什么想法吗?
答案 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行会执行此操作。