首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环访问Access数据库QueryDefs时Word / Excel崩溃

循环访问Access数据库QueryDefs时Word / Excel崩溃
EN

Stack Overflow用户
提问于 2020-11-11 10:24:24
回答 2查看 75关注 0票数 1

我在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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2020-11-11 11:18:07

在单步执行代码时点击F9,并返回确切的错误。另外,你最近重新启动机器了吗?我见过CTRL-Break随着时间的推移而积累起来,并导致各种奇怪的事情,但重启通常会修复一切。最后,自从它最后一次工作以来,发生了什么变化??!!

试试这个。会发生什么?

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2020-11-11 16:48:05

尝试单步执行集合,看看是不是某个特定的查询导致了问题:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64779581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档