如何跟踪 Access 崩溃
How can I track Access crashes
我被要求在几个数据库表单上添加一个新按钮。该按钮更改记录所在的队列,然后关闭窗体。没有什么花哨。我在三种不同的表单上有相同的按钮和相同的代码。在其中 2 个表格上,它的工作方式与我预期的一样。
该按钮在最后一个表单上每隔一段时间都可以正常工作,但在其他尝试中会导致 Access 崩溃。我试过添加错误日志记录,但它在记录任何内容之前崩溃了。我已经逐步完成了代码,它在下面的代码中的 rs.Edit
崩溃了...
按钮点击事件后面的表单代码:(每个表单在按钮后面都有这个)
Private Sub bRtD_Click()
LogReturnToDashboard Me.Recordset
DoCmd.Close acForm, Me.Name, acSaveNo
End Sub
调用的函数:(删除了错误处理程序,因为它无论如何都不会被触发,并保持已经很长的 post 更短)
Public Function LogReturnToDashboard(ByRef rs As DAO.Recordset)
Dim sSQL As String
Dim lLoc As Long
'Get Dashboard
lLoc = GetDashboard(rs!Role)
sSQL = "INSERT INTO tblActivity ( Vendor, FromLocation, OldStatus, ToLocation ) " & _
"VALUES (" & rs!VID & ", " & rs!Location & ", " & rs!Status & ", " & lLoc & ");"
CurrentDb.Execute (sSQL)
rs.Edit <-------- This is where it crashes
rs!Location = lLoc
rs.Update
End Function
SQL 命令执行,我可以检查tblActivity
并看到记录被更改回仪表板的行。
Google-fu 似乎 return ADODB 记录集导致 Access 崩溃的问题,但 DAO 却没有。
为什么它每隔一段时间就真的有效?我不知所措。当它一直崩溃时,我显然无法发布它。
我检查了 AppLog 并找到了这个条目,但这并没有告诉我太多信息。这似乎是 Office 套件的一般错误,因为 Google return 声明问题的页面是套件的每一部分。
有什么想法吗?只是更好地了解在哪里查看会很棒,我搜索了错误日志的每个部分,似乎没有什么特定于 Access。
更新:
到目前为止我有:
- 创建了一个新的数据库并导入了所有内容....重置引用...等等
- 创建了全新的表格并复制了所有内容。
- 反编译数据库
- 逐步浏览似乎比其他按钮更经常崩溃的按钮背后的代码......没有发现它们在相似的部分崩溃。 (除了这里原来的按钮,我现在还有其他导致 Access 崩溃的按钮...none 其他按钮在 rs.edit
顺便说一句)
- 下载了不同版本的 acedao.dll
- 发布在 MS 站点上希望得到更多答案...
到目前为止,我似乎仍然无法在防止这些崩溃方面取得任何进展。
由于您在 Access 数据库中以其他形式运行的代码遇到无法解释的崩溃,您的数据库中很可能有一个 "slightly" 损坏的表单。我建议尝试 decompile
数据库文件。
您可以从以下位置获得有关 /decompile
开关的更多信息:
Decompile Your Microsoft Access Database
我会制作数据库的备份副本,然后进行反编译,然后进行压缩。然后打开数据库并打开 VBA 编辑器并编译代码。然后测试一下。
/decompile
开关在过去为我解决了 Microsoft Access 数据库的许多奇怪问题。
关于您希望记录或跟踪有关崩溃原因的更多详细信息,很遗憾,我们无法做到这一点。 VBA 在 Microsoft Access 中无法拦截 Microsoft Access 可执行文件本身的错误或崩溃。
试试 /decompile
。
您没有要编辑的记录。
想想你的记录。
我终于找到了停止崩溃的方法!!
出于某种原因,Access 偶尔会在将记录集传递给模块时发出嘶嘶声。
它在数周内都运行良好(意味着按预期进行且没有崩溃)...然后突然开始崩溃。而且它也不会一直崩溃。一个按钮非常一致,因为它会工作一次,然后在下一次崩溃...然后在下一次工作,然后再崩溃。
我已经开始传递表单记录的 PK,然后在模块中创建一个按传递值过滤的记录集。从那时起,我就可以在没有崩溃的情况下工作了。
感谢大家提供的选项...我清楚地删除了一些不需要反编译并使用新数据库的垃圾 shell。
我被要求在几个数据库表单上添加一个新按钮。该按钮更改记录所在的队列,然后关闭窗体。没有什么花哨。我在三种不同的表单上有相同的按钮和相同的代码。在其中 2 个表格上,它的工作方式与我预期的一样。
该按钮在最后一个表单上每隔一段时间都可以正常工作,但在其他尝试中会导致 Access 崩溃。我试过添加错误日志记录,但它在记录任何内容之前崩溃了。我已经逐步完成了代码,它在下面的代码中的 rs.Edit
崩溃了...
按钮点击事件后面的表单代码:(每个表单在按钮后面都有这个)
Private Sub bRtD_Click()
LogReturnToDashboard Me.Recordset
DoCmd.Close acForm, Me.Name, acSaveNo
End Sub
调用的函数:(删除了错误处理程序,因为它无论如何都不会被触发,并保持已经很长的 post 更短)
Public Function LogReturnToDashboard(ByRef rs As DAO.Recordset)
Dim sSQL As String
Dim lLoc As Long
'Get Dashboard
lLoc = GetDashboard(rs!Role)
sSQL = "INSERT INTO tblActivity ( Vendor, FromLocation, OldStatus, ToLocation ) " & _
"VALUES (" & rs!VID & ", " & rs!Location & ", " & rs!Status & ", " & lLoc & ");"
CurrentDb.Execute (sSQL)
rs.Edit <-------- This is where it crashes
rs!Location = lLoc
rs.Update
End Function
SQL 命令执行,我可以检查tblActivity
并看到记录被更改回仪表板的行。
Google-fu 似乎 return ADODB 记录集导致 Access 崩溃的问题,但 DAO 却没有。
为什么它每隔一段时间就真的有效?我不知所措。当它一直崩溃时,我显然无法发布它。
我检查了 AppLog 并找到了这个条目,但这并没有告诉我太多信息。这似乎是 Office 套件的一般错误,因为 Google return 声明问题的页面是套件的每一部分。
有什么想法吗?只是更好地了解在哪里查看会很棒,我搜索了错误日志的每个部分,似乎没有什么特定于 Access。
更新:
到目前为止我有:
- 创建了一个新的数据库并导入了所有内容....重置引用...等等
- 创建了全新的表格并复制了所有内容。
- 反编译数据库
- 逐步浏览似乎比其他按钮更经常崩溃的按钮背后的代码......没有发现它们在相似的部分崩溃。 (除了这里原来的按钮,我现在还有其他导致 Access 崩溃的按钮...none 其他按钮在 rs.edit
顺便说一句)
- 下载了不同版本的 acedao.dll
- 发布在 MS 站点上希望得到更多答案...
到目前为止,我似乎仍然无法在防止这些崩溃方面取得任何进展。
由于您在 Access 数据库中以其他形式运行的代码遇到无法解释的崩溃,您的数据库中很可能有一个 "slightly" 损坏的表单。我建议尝试 decompile
数据库文件。
您可以从以下位置获得有关 /decompile
开关的更多信息:
Decompile Your Microsoft Access Database
我会制作数据库的备份副本,然后进行反编译,然后进行压缩。然后打开数据库并打开 VBA 编辑器并编译代码。然后测试一下。
/decompile
开关在过去为我解决了 Microsoft Access 数据库的许多奇怪问题。
关于您希望记录或跟踪有关崩溃原因的更多详细信息,很遗憾,我们无法做到这一点。 VBA 在 Microsoft Access 中无法拦截 Microsoft Access 可执行文件本身的错误或崩溃。
试试 /decompile
。
您没有要编辑的记录。 想想你的记录。
我终于找到了停止崩溃的方法!!
出于某种原因,Access 偶尔会在将记录集传递给模块时发出嘶嘶声。
它在数周内都运行良好(意味着按预期进行且没有崩溃)...然后突然开始崩溃。而且它也不会一直崩溃。一个按钮非常一致,因为它会工作一次,然后在下一次崩溃...然后在下一次工作,然后再崩溃。
我已经开始传递表单记录的 PK,然后在模块中创建一个按传递值过滤的记录集。从那时起,我就可以在没有崩溃的情况下工作了。
感谢大家提供的选项...我清楚地删除了一些不需要反编译并使用新数据库的垃圾 shell。