0

这应该很明显,但我很难过。

我在 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 并复制和粘贴。

我错过了什么?

4

2 回答 2

1

尝试类似:

sSql = "SELECT * FROM TABLE2 WHERE ID = '" & rst1!ID & "'" 
set rst2 = db.OpenRecordset(sSql)
于 2011-03-04T06:26:04.653 回答
1

将行更改为

set rst2 = db.OpenRecordset("SELECT * FROM TABLE2 WHERE ID = '" & rst1![ID] & "';")
于 2011-03-04T06:26:18.540 回答