• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADOでループすると1レコードずつ飛ばしてしまう)

ADOでループすると1レコードずつ飛ばしてしまう

このQ&Aのポイント
  • ADOを使用してデータベースのレコードをループ処理する際に、rs.MoveNextを使用すると1レコードずつ飛ばされる現象が発生します。
  • rs.MoveNextを使用しない場合、同じレコードをループし続けてしまいます。
  • 1レコードずつ順番にデータを取得する方法を教えてください。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

原因は、CursorLocation が規定値の adUseServer になっているので Rs.Filter してしまうと 正しく動いてくれません。 Set cn = CurrentProject.Connection rs.CursorLocation = adUseClient '←追加 rs.Open "テーブル", cn, adOpenKeyset, adLockOptimistic とするか Filter ではなく rs.Open "SELECT * FROM テーブル WHERE 店名 ='" & str店名 & "' and URL ='未'", cn, adOpenKeyset, adLockOptimistic 'rs.Filter = "(店名 = '" & str店名 & "') And (URL = '未')" とSQL中にWHERE句で指定します。 でも、更新クエリで片づけたほうが良さそうにも思えます。 UPDATE テーブル SET テーブル.URL = 'http' WHERE [テーブル].URL='未' AND [テーブル].店名='来々軒';

GRIDKWBKMYD
質問者

お礼

rs.CursorLocation = adUseClient '←追加 を追加したら、問題なくできました! 更新クエリでもできるのですね。 rs.CursorLocation の意味も調べてみます。 ありがとうございました。勉強になりました。