0

これは明らかなはずですが、私は困惑しています。

私は Access 2007 を使用しており、レコードをループしています。最初のレコードセットで 2 番目のレコードセットをフィルター処理したいと考えています。

コードは次のとおりです。

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 に答える