首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以运行VBA宏来运行已保存在MS Access数据库中的SQL查询?

是否可以运行VBA宏来运行已保存在MS Access数据库中的SQL查询?
EN

Stack Overflow用户
提问于 2019-05-30 05:20:19
回答 3查看 1.2K关注 0票数 1

我花了很多时间创建了24个不同的MS Access查询,并将它们保存在MS Access数据库中。它们必须以特定的顺序运行。

我想运行一个宏来一个接一个地执行它们。

我知道我可以使用VBA做到这一点,但我必须一次一个地将所有SQL复制到VBA中。

有没有一种方法可以让VBA只运行MS Access数据库中保存的查询,而不将它们复制到VBA中?

我对SQL很在行。15+年的Oracle工作,代码编写,数据库调优,数据数据库管理员的工作。

我刚开始使用SQL和VBA在MS Access DB上运行。

EN

回答 3

Stack Overflow用户

发布于 2019-05-30 05:44:21

在最简单的形式中,您可以定义Sub,如下所示:

代码语言:javascript
复制
Sub ExecuteQueries()
    With CurrentDb
        .Execute "MyQuery1"
        .Execute "MyQuery2"
        '...
        .Execute "MyQueryN"
    End With
End Sub

或者,如果您打算从MS Access宏调用它,请将其定义为公共模块中的Function

票数 3
EN

Stack Overflow用户

发布于 2019-05-30 05:29:45

您可以执行以下操作来运行保存的查询:

代码语言:javascript
复制
Dim db As DAO.Database, qry As DAO.QueryDef

Set db = CurrentDb

Debug.Print "-- Start --"
For Each qry In db.QueryDefs
    If qry.Name Like pattern Then
        Debug.Print qry.Name,
        qry.Execute
        Debug.Print "(" & qry.RecordsAffected & ")"
    End If
Next
Debug.Print "-- End --"

db.Close()

命名查询,使字母顺序与预期的执行顺序相匹配,例如01_deleteCustomers02_appendCustomers03_etc

如果要运行所有查询,请指定一个pattern字符串或删除If

请注意,在Visual Basic编辑器中的菜单Tools > References...下,我选择了Microsoft DAO 3.6 Object Library。(您可能有另一个版本)

票数 1
EN

Stack Overflow用户

发布于 2019-05-30 05:37:10

如果您没有特定的命名约定,请按执行顺序使用数组作为查询名称,以下是另一种方法:

代码语言:javascript
复制
Public Sub RunMasterUpdate()

    Dim qryList As Variant
    Dim i As Long

    qryList = Array("QueryName1", "QueryName2", "QueryName3")

    For i = LBound(qryList) To UBound(qryList)
        CurrentDb.Execute qryList(i)
    Next

End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56368682

复制
相关文章

相似问题

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