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

时间:2015-11-03 20:58:46

标签: sql vba ms-access union

我可以使用SQL成功创建UNION ALL查询来加入多个(总共7个)SELECT个查询,这些查询是在Access中的设计视图中构建的 - 我只需复制SQL,创建一个新查询,并将UNION ALL放在它们之间。像我期望的那样快速地工作。

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

使用DoCmd.OpenQueryRunSQL

是否有更好的方法来运行此功能

我正在寻找一种简单的方法来调用可能看起来像qry_Input_1 UNION ALL qry_Input_2的方法,而无需在每次进行更改时重新键入/复制/粘贴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

1 个答案:

答案 0 :(得分:0)

我会采取不同的方法。假设您的查询名为qry_Input_1,qry_Input_2等,我将在VBA中创建一个for循环来填充一个表,其中_1,_2是动态的,然后创建一个只从该表中选择的查询。大概是这样的

dim i as integer

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