如何在 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.OpenQuery
或 RunSQL
?
我正在寻找一种简单的方法来调用可能看起来像 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
我可以使用 SQL 连接多个(总共 7 个)SELECT
查询成功创建一个 UNION ALL
查询,这些查询是在 Access 的设计视图中构建的——我只需复制SQL,创建一个新查询,并在它们之间放置 UNION ALL
。工作如我所料,而且很快。
但是,我经常被要求修改个别 SELECT
查询的某些方面。使用 UNION ALL
重新创建查询的唯一方法是复制 SELECT
语句并再次粘贴。
是否有更好的方法 运行 使用 DoCmd.OpenQuery
或 RunSQL
?
我正在寻找一种简单的方法来调用可能看起来像 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