• ベストアンサー

ACCESS 追加クエリーについて

プログラム又はマクロにおいて追加クエリーを実行した時、抽出した全てのデータが追加されない時が見受けられるのですが、原因をご存知の方は教えてもらえませんか?尚、クエリーを単独で実行した時は正常に抽出、追加できることは言うまでもありません。

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

私より詳しそうなので、トンチンカンな回答かもしれませんが、 >プログラムでクエリーを実行後に1秒間制御をWindowsに渡すなどの動作をさせて現象がおきないようにしていたのですが、 これで現象がおきないということは、プログラムが次のラインを実行している時点で、テーブルデータの書き換え処理が終わっていない、ということになると思います。 ということであれば、アクセスの本質的な問題と言うべきでしょう。 状況が改善されているかどうかは、最新のバージョンにすべてのサービスパックをあてて再現するか検証するという、つまらない回答になってしまいます。 現実的な対応として考えられることは、 クエリのプロパティのレコードロックを「すべてのレコード」に変えてみることか、クエリ実行後に Docmd.テーブルB.requery などをしてみるくらいしか思いつきません。 クエリ実行前にmdbの最適化をするのも良いかもしれません。 まあ、そのあたりが「アクセスですからね」といわれてしまう所以なのかもしれません。 私は、他dbをもとにmdbにテーブルを作成したときにレコードカウントは同じでも実際に欠落しているデータがあるというような現象に遭遇したこともあって、アクセスには限界を感じています。

fuchi2
質問者

お礼

『これで現象がおきないということは、プログラムが次のラインを実行している時点で、テーブルデータの書き換え処理が終わっていない、ということになると思います。』のご回答ありがとうございます。 私もそう思っております。だとすればデータ書き換え処理が終わるまで次のラインの処理はACCESS側が暗黙としてが待つようになっていなければ危なくてプログラムを書けないことになりますよね!又『.そのあたりが「アクセスですからね」といわれてしまう所以・・・』も同感です・・・・ でもこまったものです。私はVBAは基礎から学習したわけではなく、体験的なものしかわかりませんが、どうもPCの古さ(動作速度)などかなと推測(推測では技術的意味はないのですけど・・・)もあるのかな?でも信用できないとなるとクリチカルなアプリは作れない! 又は、何らかの方法で正常動作を確認して、次のライン処理に進ませるテクニックがいると思っております。 ACCESSは使いやすく応用範囲も広い、つまり問題解決のための手順がわかればすぐに作成⇒実行⇒検証できるので優れものと思うし、好きなのですが・・・ ありがとうございました。

その他の回答 (1)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

どのように追加したデータを確認されていますか? 確認のタイミングと、データの確認方法を教えてください。

fuchi2
質問者

お礼

早速のご回答誠にありがとうございます。確認とタイミングですが、 はじめに、データ抽出元テーブル名をA、抽出先テーブル名をBとします。テーブルAとBは同じ構造であるとします。クエリーは条件なしでテーブルAの全てをBに追加するものです。 クエリーも、プログラム中のクエリーも同じもので、プログラム実行後にテーブルBとテーブルAのレコード数を確認し差異数をチェック、又クエリーを手動にて実行し、同様に確認します。このときプログラム実行の分がテーブルBのレコード数がAより少ない現象なのです。 この現象は昔のWindows3.1+Access1.1のころから経験していたことでプログラムが下手なので起こっていた、もしくはハードディスクの動作が遅いことで起こっているのかなと勝手に解釈し、プログラムでクエリーを実行後に1秒間制御をWindowsに渡すなどの動作をさせて現象がおきないようにしていたのですが、この現象はAccessの本質的な問題なのか又は単にプログラムのテクニックの問題なのか疑問になって質問したしだいです。どうぞよろしくお願いします。

関連するQ&A

専門家に質問してみよう