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)を含めるようになったらエラーが出なくなった。