- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADOでループすると1レコードずつ飛ばしてしまう)
ADOでループすると1レコードずつ飛ばしてしまう
このQ&Aのポイント
- ADOを使用してデータベースのレコードをループ処理する際に、rs.MoveNextを使用すると1レコードずつ飛ばされる現象が発生します。
- rs.MoveNextを使用しない場合、同じレコードをループし続けてしまいます。
- 1レコードずつ順番にデータを取得する方法を教えてください。
- みんなの回答 (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 [テーブル].店名='来々軒';
お礼
rs.CursorLocation = adUseClient '←追加 を追加したら、問題なくできました! 更新クエリでもできるのですね。 rs.CursorLocation の意味も調べてみます。 ありがとうございました。勉強になりました。