レコードセットをループし、別のテーブルでSQLステートメントを実行し、そのテーブルのレコードを更新するDAOレコードセットがあります。なんらかの理由で、SQLステートメントのwhere句でレコードセット値を使用することは好ましくありません。私は考えることができるすべてを試しました。SQL内のVBAアクセスレコードセットフィールド
strSQL = "Select A, B FROM TABLE1"
Set rs = CurrentDb.OpenRecordset(strSQL)
If Not rs.BOF and Not rs.EOF Then
rs.MoveFirst
While (Not rs.EOF)
DoCmd.RunSQL "UPDATE TABLE2 SET TABLE2.B = rs!B WHERE TABLE2.A = rs!A;"
rs.MoveNext
Wend
End If
rs.Close
唯一の問題はwhere句です。 set節には同じように値にアクセスしていても問題はありません。 where句でデータ型の不一致エラーが発生します。
TABLE1.AとTABLE2.Aのフィールドタイプは何ですか?彼らはどちらも弦ですか? – braX
あなたはレコードセットの値を使用していません....あなたは文字列 "rs!A"と "rs!B"を使用しています.... _rs!A_と_rs!B_の値をSQLクエリに挿入する必要があります文字列......インターネット上で 'string concatenation'を参照してください。 – jsotola
善良な君。これを単一のクエリとして書くだけです。これをループしてSQLステートメントを構築するのは夢中です! – JohnFx