我正在尝试通过ADO来计算某些表中的项目数。 查询如下:
select count(*) as a from TABLE1;
select count(*) as b from TABLE2;
如果我通过SQL GUI运行它,我会得到:
a
------------
1
b
------------
0
到目前为止一切顺利。
但是,如果我运行此代码(VBA):
Dim adoCon As New ADODB.Connection
Dim adoRecords As ADODB.Recordset
Dim query As String
query ="select count(*) as a from TABLE1;select count(*) as b from TABLE2;"
adoRecords = adoCon.Execute(query)
Debug.Print(adoRecords!a)
Debug.Print(adoRecords!b)
adoRecords!b
失败如果我检查了adoRecords对象,则字段字段只有一个项目,a。
如果我在两个单独的查询中运行它,它运行正常(但我有一个重要的往返时间,所以这很麻烦......)。
如何通过ADO获得两个输出?
非常感谢你的帮助,
马克西姆
答案 0 :(得分:1)
待办事项
SELECT COUNT(*) cnt FROM table1
UNION
SELECT COUNT(*) cnt FROM table2
并且您将执行一个语句并检索包含1列的2行。
答案 1 :(得分:1)
这将只使用两个表中的计数生成一条记录(如您所愿)
select (select count(*) from TABLE1) as cntTbl1, (select count(*) from TABLE2) as cntTbl2
Union all解决方案将在每个表上生成一条记录,并且需要对表的引用
select count(*) as cnt, 'table1' as reference from table1
union all
select count(*),'table2' from table2