Ms access 访问导航表单,取消卸载事件

Ms access 访问导航表单,取消卸载事件,ms-access,vba,onunload,Ms Access,Vba,Onunload,在导航子窗体的卸载事件中,我有以下代码 If MsgBox ("Changes have not been locked and will be lost. Do you wish to proceed?", vbYesNo) = vbNo Then Cancel = True End If 当用户单击父窗体上的其他导航按钮时,它会显示“是/否”消息框,但会继续,关闭并清除活动的子窗体,而不管您选择了什么。是否可以取消因单击导航按钮而导致的导航?不清楚if语句之外的内容,但似乎您只需

在导航子窗体的卸载事件中,我有以下代码

If MsgBox ("Changes have not been locked and will be lost. Do you wish to  proceed?", vbYesNo) = vbNo Then
    Cancel = True
End If

当用户单击父窗体上的其他导航按钮时,它会显示“是/否”消息框,但会继续,关闭并清除活动的子窗体,而不管您选择了什么。是否可以取消因单击导航按钮而导致的导航?

不清楚if语句之外的内容,但似乎您只需要使用Exit子命令。这将允许您完全停止导航(如果导航本身是Sub),因此:


由于Access会在您转到另一条记录时立即保存一条记录,因此我会使用
BeforeUpdate
事件,而不是
Unload
事件。我的表单上有一个按钮,该按钮通过存储过程手动保存记录,其中包含未绑定文本框中的值。卸载事件捕捉到更改尚未保存的事实并提示用户。这就是我在卸载事件中的所有内容,而不是检查未保存更改的If语句(涉及敏感信息,因此我没有包括它)。在form_unload事件中使用Exit Sub不会取消它;您的表单无论如何都会卸载。在这种情况下,“取消”不起作用的原因是它是导航表单上的子表单。我只是在有未保存的更改时禁用了导航按钮。
If MsgBox ("Changes have not been locked and will be lost. Do you wish to proceed?", vbYesNo) = vbNo Then
    Exit Sub
End If