- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADO VBA 実行時エラー3021)
ADO VBA 実行時エラー3021
このQ&Aのポイント
- ADO VBA実行時エラー3021が発生しました。エラーの意味や原因について詳しく説明します。
- rs.Openメソッドの実行時にBOFとEOFのいずれかがTRUEになっているか、レコードが削除されている場合にエラー3021が発生します。
- rs.Updateメソッドの実行時も同じエラーが発生することがありますが、原因はrs.Openメソッドと同じです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
レコードセットをOpenした時にレコードが一件もないとBOF,EOFは共にTrueになります。 無条件にUpDateするのではなく、レコードが取得出来た場合にだけ更新します。 もしRsのEOFがFalseなら If Rs.EOF = False Then ' Not Rs.EOF と同義 rs("日時") = Now() rs.Update Else Msgbox "該当するレコードがありません。" End If 上記はコードでは仮に10件のレコードが該当しても更新するのは先頭のレコード 一件だけです。もし、そのSelect文で複数レコードを更新するなら rs.Open "SELECT * FROM Tログイン WHERE サイト名='" & サイト名 & "'", cn, adOpenStatic, adLockOptimistic If Not Rs.EOF Then Do While Not Rs.EOF rs("日時") = Now() rs.Update Rs.MoveNext '次のレコードへ移動。カーソルがレコードの終端に来るとEOFはTrueになる Loop Else Msgbox "該当するレコードがありません。" End If
お礼
どうもありがとうございました。