【问题标题】:Can I perform SQL JOIN like operations with DAO Excel VBA Recordsets?我可以使用 DAO Excel VBA 记录集执行类似 SQL JOIN 的操作吗?
【发布时间】:2021-01-10 03:47:46
【问题描述】:

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

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

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

【问题讨论】:

  • 我很想看看您是如何通过转换内置于 VBA 中的数组来创建记录集的。这些数据的来源是什么?随意在这个编程问答网站上展示代码。
  • 据我所知,您不能使用记录集作为查询源。您可能会考虑将第二个记录集插入到您的 Access DB 中,以便在那里执行联接。
  • 谢谢,蒂姆。回到绘图板:D.

标签: sql excel vba join recordset


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多