如何在 VBA 中 UNION ALL 多个 SELECT 查询,而无需在 VBA 中键入 SQL?

How to UNION ALL multiple SELECT queries in VBA, without typing SQL in VBA?

我可以使用 SQL 连接多个(总共 7 个)SELECT 查询成功创建一个 UNION ALL 查询,这些查询是在 Access 的设计视图中构建的——我只需复制SQL,创建一个新查询,并在它们之间放置 UNION ALL。工作如我所料,而且很快。

但是,我经常被要求修改个别 SELECT 查询的某些方面。使用 UNION ALL 重新创建查询的唯一方法是复制 SELECT 语句并再次粘贴。

是否有更好的方法 运行 使用 DoCmd.OpenQueryRunSQL

我正在寻找一种简单的方法来调用可能看起来像 qry_Input_1 UNION ALL qry_Input_2 的方法,而不必每次进行更改时都 retype/copy/paste SELECT 查询。我对 SQL 或 VBA 方法持开放态度。


这是我的VBA,我是根据下面的输入开始的(感谢@Ispep Aloc)。我在使用我的 tempTable 时遇到了问题。

Sub UnionQuery()
Dim i As Integer
Dim tempTable As String
tempTable = "tbl_P54_Union"

For i = 1 To 7
    DoCmd.RunSQL "INSERT INTO tempTable SELECT * FROM qry_P54Input_" + CStr(i)
Next i
End Sub

我会对此采取不同的方法。假设您的查询被命名为 qry_Input_1、qry_Input_2 等,我将在 VBA 中创建一个 for 循环以使用动态的 _1、_2 填充 table 然后创建的查询仅从 table 中进行选择。大致是这样的

dim i as integer

for i = 1 to 7
    docmd.runsql "insert into temp table select * from qry_Input_" + CStr(i)
next i