如何解决遍历Access数据库QueryDefs时Word / Excel崩溃
我在Word中有一个VBA过程,用于检查Access数据库中是否存在QueryDef。直到几天前,它开始崩溃,Word才能正常工作。
问题似乎是此行:For Each qdf In db.QueryDefs
。这是Word挂起然后崩溃的行。我不认为这是我的代码,因为我在一个新的Word文档中创建了一个非常基本的测试过程,该过程只是一个没有内容的循环(请参见下文),并创建了一个新的Access数据库,但是它仍然崩溃。
当我获得锁定的数据库文件时,成功建立了到数据库的连接。并且此代码将成功执行并打印到立即窗口:Debug.Print db.QueryDefs.Count
我还用Excel中的空循环测试了此基本过程,它也在那里崩溃了。我还更新了Office(我在Office 365,Office的桌面版本上)。有什么我想念的吗?
Reference to: Microsoft Office 16.0 Access Database Engine Object Library
Option Explicit
Sub test()
Dim qdf As DAO.QueryDef
Dim db As DAO.Database
Set db = OpenDatabase("DatabasePathAndFileName")
Debug.Print db.QueryDefs.Count
For Each qdf In db.QueryDefs
Next qdf
End Sub
解决方法
在逐步浏览代码时按F9键,然后发回确切错误。另外,您最近重启了机器吗?我已经看到CTRL-Breaks随着时间的流逝而累积,并引起各种怪异,但是重新启动通常可以解决所有问题。最后,自上次工作以来发生了什么变化?
尝试一下。会发生什么?
Public Sub ExecParameterQuery()
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("myActionQuery")
'Set the value of the QueryDef's parameter
qdf.Parameters("Organization").Value = "Microsoft"
'Execute the query
qdf.Execute dbFailOnError
'Clean up
qdf.Close
Set qdf = Nothing
Set dbs = Nothing
End Sub
,
尝试逐步浏览集合以查看是否是引起问题的特定查询:
Sub Test()
Dim qdf As DAO.QueryDef
Dim db As DAO.Database
Set db = OpenDatabase("DatabasePathAndFileName")
If db.QueryDefs.Count > 0 Then
For Each qdf In db.QueryDefs
MsgBox qdf.Name
Next qdf
End If
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。