Ms access MS Access 2010-提示用户保存更改

Ms access MS Access 2010-提示用户保存更改,ms-access,vba,beforeupdate,Ms Access,Vba,Beforeupdate,我已经开发了一个表单,我想提示用户在离开修改过的记录之前保存更改 如果用户试图离开,我希望出现一个提示,询问他们是否希望保存更改,然后他们可以选择是或否 我被告知更新前事件是我需要关注的事件,但我一直收到您输入的更新前表达式,因为事件属性设置生成了以下错误消息 以下是我在遇到错误之前采取的步骤: 将视图更改为窗体视图 通过表单更改记录中的任何位置 尝试通过我放入表单中的navi按钮从表单中导航出去,如果不做任何更改,navi按钮可以正常工作,但如果只做了一次更改,navi按钮将无法执行任何操作

我已经开发了一个表单,我想提示用户在离开修改过的记录之前保存更改

如果用户试图离开,我希望出现一个提示,询问他们是否希望保存更改,然后他们可以选择是或否

我被告知更新前事件是我需要关注的事件,但我一直收到您输入的更新前表达式,因为事件属性设置生成了以下错误消息

以下是我在遇到错误之前采取的步骤:

将视图更改为窗体视图 通过表单更改记录中的任何位置 尝试通过我放入表单中的navi按钮从表单中导航出去,如果不做任何更改,navi按钮可以正常工作,但如果只做了一次更改,navi按钮将无法执行任何操作 没有发生任何事情,因此我返回到Design视图,以接收以下错误通知 我按OK,然后收到以下信息: 然后我回到原点

此外,自出现此问题以来,任何条件格式都已完全停止工作;我不知道两者是否有联系,但认为值得一提

有什么想法可以实现理想的无错误?不幸的是,我无法发布我的系统,因为它处理高度机密的数据

更新:

我已经尝试了各种代码,我已经修改,都没有用。目前,我已经完全删除了任何此类代码,但我过去尝试过的代码的大意是:

Private Sub Form_BeforeUpdate(Cancel As Integer)

Dim ctl As Control

On Error GoTo Err_BeforeUpdate

If Me.Dirty Then
   If MsgBox("Do you want to save?", vbYesNo + vbQuestion, _
           "Save Record") = vbNo Then
      Me.undo
   End If
End If

Exit_BeforeUpdate:
   Exit Sub

Err_BeforeUpdate:
   MsgBox Err.Number & " " & Err.Description
   Resume Exit_BeforeUpdate
End Sub

Microsoft Access绑定表单的默认行为是每当用户执行以下操作时自动保存记录:

移动到另一条记录、关闭窗体或显式单击功能区上的“保存”按钮

因此,我认为要求用户确认是否希望保存可能是多余的

“更新前表单”事件通常用于验证,因此您可以检查已输入控件的数据,并在代码中决定是否允许保存数据

要防止保存数据,您需要更改Cancel变量,例如:

Cancel=True
MsgBox "There is a problem with the data entry", vbExclamation, "Please Check Your Data"
然后,用户必须按escape键或单击功能区上的“撤消”以退出编辑模式

关于您遇到的错误,请查看并尝试以下网页中记录的反编译开关:

我在反复使用和保存VBA代码时偶尔会出错。进行反编译通常可以解决此问题。但是,请确保在开始之前备份数据库

此外,您还可以尝试将表单导出为文本文件,然后使用以下代码再次导入,如果表单已损坏,这些代码将有所帮助:

    Application.SaveAsText acForm, stringFormName, stringFolderName & "\" & stringFormName & ".txt"
    Application.LoadFromText acForm, stringFormName, stringFileName
在“设计”视图中打开窗体

在表单上单击鼠标右键,然后从弹出菜单中单击“属性”

向下滚动至更新前事件

一直走到右边,你会看到一个椭圆形的盒子。。。在里面。单击该框以打开与更新前事件关联的代码

如果它打开为一个空白子项,则表示您没有正确分配事件。确保在更新一个单词之前调用事件,而不是在更新两个单词之前调用事件


您的错误表明这可能是问题的原因。

请发布代码。听起来你好像完全搞错了。问题更新了-有什么想法吗?在“On Error GoTo”的代码中添加一个代码中断。。。行,然后当代码中断并高亮显示该行时,缓慢地重复按F8!直到你得到消息。这将确切地告诉您它不喜欢哪一行代码。张贴那行代码和你得到的确切错误,我们将看看是否有什么跳出。谢谢你的建议;我已经设置了错误时的代码中断…,但不幸的是,当我调试时,它要求我运行一个我没有的宏,因此当我按F8时,什么也没有发生。你最近压缩、修复和反编译了吗?我希望您不打算使用具有此想法的子表单。MS Access的默认设置是保存,停止保存需要做很多工作,通常需要一个未绑定的表单;然而,我把这个项目导入了一个新的数据库,现在一切都正常了!不过,非常感谢您的帮助。我将项目导入了一个新的数据库,现在一切正常。谢谢你的努力!