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

时间:2011-03-04 06:19:10

标签: 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 = 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并复制和粘贴。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

尝试类似:

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

答案 1 :(得分:1)

将行更改为

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