• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADO VBA 実行時エラー3021)

ADO VBA 実行時エラー3021

このQ&Aのポイント
  • ADO VBA実行時エラー3021が発生しました。エラーの意味や原因について詳しく説明します。
  • rs.Openメソッドの実行時にBOFとEOFのいずれかがTRUEになっているか、レコードが削除されている場合にエラー3021が発生します。
  • rs.Updateメソッドの実行時も同じエラーが発生することがありますが、原因はrs.Openメソッドと同じです。

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

  • ベストアンサー
  • nofx35
  • ベストアンサー率82% (14/17)
回答No.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

hcyyfnknnjo
質問者

お礼

どうもありがとうございました。

関連するQ&A