Vba 如何使用另一个记录集中的值打开Access记录集

Vba 如何使用另一个记录集中的值打开Access记录集,vba,ms-access,dao,data-access-object,Vba,Ms Access,Dao,Data Access Object,这应该是显而易见的,但我被难住了 我在Access 2007中,我正在循环浏览记录。我想在第一个记录集上筛选第二个记录集 代码如下: Dim db as Database Dim rst1 as DAO.Recordset, rst2 as DAO.Recordset Set rst1 = db.OpenRecordset("TABLE1", dbOpenDynaset) rst1.MoveFirst Do Until rst1.EOF rst1.Edit set rst2 =

这应该是显而易见的,但我被难住了

我在Access 2007中,我正在循环浏览记录。我想在第一个记录集上筛选第二个记录集

代码如下:

Dim db as Database
Dim rst1 as DAO.Recordset, rst2 as DAO.Recordset
Set rst1 = db.OpenRecordset("TABLE1", dbOpenDynaset)

rst1.MoveFirst
Do Until rst1.EOF
    rst1.Edit
    set rst2 = db.OpenRecordset("SELECT * FROM TABLE2 WHERE ID = 'rst1![ID]';")
    ....
这不会打开按ID筛选的记录集。但是,以下代码运行时没有错误(其中ID=0001),我得到了一个经过适当筛选的记录集

set rst2 = db.OpenRecordset("SELECT * FROM TABLE2 WHERE ID = '0001';")
我已经测试,以确保rst1![ID]=0001。我把0001放在一个变量中,把这个变量放在语句中,也没有运气。我确实注意到使用rst(“ID”)语法会立即导致错误。我还尝试在查询编辑器中构建SQL并进行复制和粘贴

我错过了什么

试试以下方法:

sSql = "SELECT * FROM TABLE2 WHERE ID = '" & rst1!ID & "'" 
set rst2 = db.OpenRecordset(sSql)
换行

set rst2 = db.OpenRecordset("SELECT * FROM TABLE2 WHERE ID = '" & rst1![ID] & "';")