我在Excel中设置了一个VBA过程,将一些文本插入到Excel选项卡中,然后将其作为命令文本发送给SQL查询以完成。
但是,在我的查询中,我有3个不同的表,我想分别返回(因此我的VBA代码中的3个不同连接)。
是否有一种方法可以使用我的查询返回三个不同的表,因此我不必单独运行查询3个单独的次数即可在末尾获取其他选择语句?
查询代码结束:
SELECT * FROM #MailMergeFormatStep1
SELECT * FROM #MailMergeFormatStep2
SELECT * FROM #MailMergeFormatStep3
我希望每个选择语句的结果都可以运行,然后返回到Excel中的单独表连接中。
代码:
Sub UploadCheckerQuery()
ActiveWorkbook.Connections("UploadCheckerConnection1").ODBCConnection.CommandText = Sheets("SQL1").Range("A5:A400").Value
ActiveWorkbook.Connections("UploadCheckerConnection1").Refresh
ActiveWorkbook.Connections("UploadCheckerConnection2").ODBCConnection.CommandText = Sheets("SQL2").Range("A5:A400").Value
ActiveWorkbook.Connections("UploadCheckerConnection2").Refresh
ActiveWorkbook.Connections("UploadCheckerConnection3").ODBCConnection.CommandText = Sheets("SQL3").Range("A5:A400").Value
ActiveWorkbook.Connections("UploadCheckerConnection3").Refresh
End Sub
可以从单个查询中返回多个记录集 - 这就是ADO命令NextrecordSet的目的。完整的详细信息在这里,但短暂地使用以下查询:" Select * From Table1; Select * From Table2"。但是,多个记录集必须在相同的连接上。
Dim rs as new recordset
set rs = connections(1).execute("Select * from table1:select * from table2)
msgbox rs(0)
rs.nextrecordset
msgbox rs(0)