• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DBの更新??)

DBの更新でADODB.Recordsetエラーが発生する原因とは?

このQ&Aのポイント
  • DBの更新でADODB.Recordsetエラーが発生する原因は、現在のRecordsetが更新をサポートしていないか、プロバイダや選択されたロックタイプの制限に達している可能性があります。
  • エラーメッセージ「ADODB.Recordset (0x800A0CB3) 現在のRecordsetは更新をサポートしていません。プロバイダか、選択されたロックタイプの限界の可能性があります。」が表示される場合、更新できるRecordsetではないか、制限が達している可能性がある。
  • ADODB.Recordsetエラー(0x800A0CB3)が発生する原因は、現在のRecordsetが更新をサポートしていないか、制限に達している可能性がある。

質問者が選んだベストアンサー

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

このケースは試したことが無いので「予想」でお答えします。間違っていたらすいません。 ExecuteでSelect文を「実行」することにより、「参照可能なクエリ」をRecordSetに格納されます。故に、その参照用のクエリに対し、更新をすることができない、ということではないでしょうか? これは、新しいレコードを作ろうとしているのか、既存のレコードを更新しようとしているのかが不明確ではありますが、Executeを使ってINSERT文、もしくはUPDATE文を使ってみてはいかがでしょうか? (ただし、DBがAccessの場合、パフォーマンスが落ちます) もう一つの解決策として Set rs=db.Execute("select * from control " ) この行を Set rs=Server.CreateObject("ADODB.Recordset") rs.Open "control", db, adOpenKeyset, adLockOptimistic としてやってみてください。 未テストですし、私の頭の中だけでの問題抽出なので確実性は低いと思ってください・・・。あしからず。

jincyan
質問者

補足

Set rs=Server.CreateObject("ADODB.Recordset") でやると上手くいきました。あれこれ悩んでそういう結論に昨日到達したのでした。 回答のメールがこなかったので回答があったことが解りませんでした。