• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EOFを正しく判断してくれない)

EOFを正しく判断してくれない

このQ&Aのポイント
  • テーブル[tbl_A]のデータをテーブル[tbl_b]にコピーする処理を実行すると、抽出されたテーブル[tbl_A]のデータが2件なら、テーブル[tbl_b]のデータは4件とコピーされるデータ件数が2倍になってしまいます。
  • テーブル[tbl_A]のデータをコピーしている最中にupdateしているため、EOFを正しく認識していない可能性があります。
  • 原因としては、rsA.EOFを正しく認識しないため、ループが正常に終了せず、データが2倍になってしまうことが考えられます。解決策としては、rsA.EOFの代わりにrsA.RecordCountを使用することが挙げられます。

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

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

そういうことでEOF認識が間違うことはありません。 コードを見ても問題ないようですが、 ひょっとして2回実行されませんか? SubではなくFunctionになっているのでどこかでCallしているのでしょう。 テーブルBをクリアーしてステップ実行してみることをお勧めします。

MekaOsaru3
質問者

お礼

rivoisuさん、大変お返事が遅くなり申し訳ありませんでした。 早速、ご教授いただいたとおりステップ実行をしながらいろいろ調査した結果 「Do While」のrsA.EOFは、データ件数×2回ループしないとTrueに変わらず 「Do While」でUPDATEするテーブルを1つだけにすると(rsC.Update・rsC.Updateを おこなわずrsB.Updateのみにする)、rsA.EOFはデータ件数と同じ回数ループして Trueになることが判明しました。 rivoisuさんから「EOFの認識間違いはない」と教えていただいたので、 もしかしたら原因は他にあるんじゃないかと疑い、同じプログラムを別の 事業所で実行してみたら、正常に動作しました。 tbl_Aはデータが2万件以上あり、問題の事業所は他の事業所に比べて回線?が 大変遅くデータの読み書きに時間がかかるため、それも視野に入れて調査を続け ようと思います。 まだ原因はわかりませんが、アドバイスのおかげで解決の糸口が見えてきました。 ご回答、本当にありがとうございました。

関連するQ&A