【发布时间】:2015-07-27 19:35:00
【问题描述】:
我被要求在几个数据库表单上添加一个新按钮。该按钮更改记录所在的队列,然后关闭表单。没有什么花哨。我在三种不同的表单上有相同的按钮和相同的代码。在其中 2 个表单上,它的工作原理与我预期的一样。
该按钮在最后一个表单上每隔一次都可以正常工作,并且在其他尝试时使 Access 崩溃。我尝试添加错误日志记录,但它在记录任何内容之前崩溃。我已经单步执行了代码,它在下面的代码中的 rs.Edit 处崩溃...
按钮点击事件后面的表单代码:(每个表单的按钮后面都有这个)
Private Sub bRtD_Click()
LogReturnToDashboard Me.Recordset
DoCmd.Close acForm, Me.Name, acSaveNo
End Sub
调用函数:(删除错误处理程序,因为它无论如何都不会被触发,并保持已经很长的帖子更短)
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 似乎返回了 ADODB 记录集崩溃 Access 的问题,而不是 DAO。
为什么它每隔一段时间就会起作用?我不知所措。当它持续崩溃时,我显然无法发布它。
我检查了 AppLog 并找到了这个条目,但这并没有告诉我太多。这似乎是 Office 套件的一般错误,因为 Google 返回的页面声明问题是套件的每个部分。
有什么想法吗?只是更好地了解在哪里看会很棒,我已经搜索了错误日志的每个部分,似乎没有任何特定于 Access。
更新:
到目前为止,我有:
- 创建了一个新数据库并导入了所有内容....重置引用...等
- 创建全新的表单并复制所有内容。
- 反编译数据库
- 逐步执行按钮背后的代码,这些代码似乎比其他按钮更频繁地崩溃......没有发现它们在类似的部分崩溃。 (除了这里的原始按钮之外,我现在还有其他导致 Access 崩溃的按钮......其他按钮都没有在 rs.edit btw 崩溃)
- 下载了不同版本的 acedao.dll
- 发布在 MS 网站上,希望得到更多答案...
到目前为止,我似乎仍然无法在防止这些崩溃方面取得任何进展。
【问题讨论】: