【发布时间】:2011-08-24 02:43:53
【问题描述】:
我有一个 MS-Access 表单,其中包含 3 层嵌套表单。第二种形式有两个文本框——名字和姓氏。出于某种奇怪的原因,一旦用户开始输入名字,表单就会尝试触发保存。
我怎样才能知道谁/什么/哪里触发了保存?
我放入了一个 Form_BeforeInsert 处理程序,我可以在那里截获,但调用堆栈没有指出事件是从哪里触发的。
有什么想法吗?
【问题讨论】:
我有一个 MS-Access 表单,其中包含 3 层嵌套表单。第二种形式有两个文本框——名字和姓氏。出于某种奇怪的原因,一旦用户开始输入名字,表单就会尝试触发保存。
我怎样才能知道谁/什么/哪里触发了保存?
我放入了一个 Form_BeforeInsert 处理程序,我可以在那里截获,但调用堆栈没有指出事件是从哪里触发的。
有什么想法吗?
【问题讨论】:
当您将焦点从父窗体上的控件切换到子窗体上的控件时,如果父窗体的任何绑定控件包含未保存的值,则该焦点切换会触发父窗体的当前记录的保存。我认为没有任何方法可以防止或推迟这种行为。您必须允许记录保存或放弃更改。正如@woliveirajr 建议的那样,您可以拦截更新前的表单事件以询问用户是保存还是丢弃。您可以对 Before Insert 事件执行相同的操作。
【讨论】:
来自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 行会这样做。
【讨论】: