首页 > 解决方案 > 我可以使用 DAO Excel VBA 记录集执行类似 SQL JOIN 的操作吗?

问题描述

我有两个记录集,第一个 ( rs1) 是来自 Access 数据库的查询结果,另一个 ( rs2) 是通过转换内置于 VBA 中的数组创建的。第一个包含一系列数据,第二个包含与第一个列中的一个相关的一些描述。

我想将这两个记录集加入到第三个中,包含第一个的记录和第二个的描述字段。类似于INNER JOINSQL 查询中的东西。

在VBA中可以吗?类似于使用rs1rs2作为表的查询以及必要的查询结构(SELECT xyx FROM rs1, rs2 WHERE abc)...

标签: sqlexcelvbajoinrecordset

解决方案


对于记录集对话中的数组,我发现了这段代码,它工作得很好:

Private Function ADOCopyArrayIntoRecordset(argArray As Variant) As ADODB.Recordset 

Dim rsADO As ADODB.Recordset
Dim lngR As Long
Dim lngC As Long

Set rsADO = New ADODB.Recordset

For lngC = 1 To UBound(argArray, 2)
rsADO.Fields.Append "Fld" & lngC, adVariant
Next lngC

rsADO.Open

For lngR = 1 To UBound(argArray, 1)
For lngC = 1 To UBound(argArray, 2)
rsADO.AddNew
rsADO.Fields(lngC - 1).Value = argArray(lngR, lngC)
Next lngC
rsADO.MoveNext
Next lngR

rsADO.MoveFirst

Set ADOCopyArrayIntoRecordset = rsADO
End Function

推荐阅读