我在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发布于 2020-11-11 11:18:07
在单步执行代码时点击F9,并返回确切的错误。另外,你最近重新启动机器了吗?我见过CTRL-Break随着时间的推移而积累起来,并导致各种奇怪的事情,但重启通常会修复一切。最后,自从它最后一次工作以来,发生了什么变化??!!
试试这个。会发生什么?
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发布于 2020-11-11 16:48:05
尝试单步执行集合,看看是不是某个特定的查询导致了问题:
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 Subhttps://stackoverflow.com/questions/64779581
复制相似问题