繁体   English   中英

在 MS Access VBA 中加入记录集和表

[英]Joining a recordset and table in MS Access VBA

我正在尝试通过 VBA 加入带有记录集的表。 这可能吗? 我基本上想加入两个表,但是在我加入它们之前需要对其中一个表进行更多过滤。

我怀疑你想要:

SELECT ID, field1, field2 
FROM Table1 a
INNER JOIN (
    SELECT ID, field3, field4
    FROM Table2
    WHERE field5 = 42 ) b
ON a.ID = b.ID

据我所知,您不能在记录集上使用连接。 即使有可能,它也需要过于复杂而无用的代码。)

我建议不要在连接中使用记录集,而是从记录集中创建一个临时

或者,使用您用来制作记录集的查询来直接制作临时表。 然后使用 SQL 查询将第一个表与临时表连接起来。
假设您的数据库中有一个表table1tableA

dim sqlString1 As String
dim sqlString2 As String
'the temporary table - this is what was in your recordset 
sqlString1 = "SELECT field1, field2 FROM table1 INTO tempTable"
'the join of existing tableA with the tempTable
sqlString2 = "SELECT field1, field2, fieldA, fieldB INTO joinedTable"& _
             "FROM table1"& _
             "JOIN tableA ON field1 = fieldA" 
CurrentDB.Execute sqlString1
CurrentDB.Execute sqlString2

请注意,我将JOIN结果放在数据库中的另一个表中。 或者,您可以将结果保存在记录集中。

我同意制作临时表。 此外,根据本地表的大小,您可以创建一串值以传递给您的 SQL 服务器查询。 (SELECT __ FROM __ WHERE ___ IN (string of values)。棘手,但如果您的本地表很小并且连接显着减少了您的 SQL 查询结果,可能会很有用。

对于我的情况,本地表并没有减少我的服务器查询结果。 所以我只是对我的本地表进行了更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM