ExcelからADOを使ってAccessデータベースに書き込みをするとき

「キー列の情報が足りないか、正しくありません。更新の影響を受ける行が多すぎます」というエラーが表示された。次のように書き込み用のレコードセットを作成し、フィールドに値を設定してから更新するような作りだった。

Dim rs as new ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "SELECT field1, field2 FROM table1 WHERE ID = 3", adOpenForwardOnly, adLockOptimistic
rs!field1 = 4
rs!field2 = 5
rs.Update

調べたところ、オープン時に指定するフィールドに主キーを含めないとエラーになることがある とのこと。

"SELECT ID, field1, field2 FROM table1 WHERE ID = 3"

のように主キーフィールド(ID)を含めるようになったらエラーが出なくなった。