• 締切済み

AceessVBA 非同期処理について

お知恵を拝借いたしたく、質問させていただきます。 Accessで伝票作成システムを運用しておりますが、レポートを出力した時に レコードソースにあるはずのデータが表示されないことが100回に1度程度あります。 その場合に、デバックモードでブレークポイントをつけて再現するとすべてのデータが 表示されます。 前提 1.OS:Windows7 2.バージョン:Access2010 (2003互換モード) 3.データベースとプログラムでAccessのファイルを分離しています。   両ファイルはネットワークドライブ上に保存してあり、ネットワークドライブ上で   実行しています。 4.クライアントPCとネットワークドライブはADSLで接続しています。 5.レポートはDoCmd.OpenReportで出力しています。   レポートのレコードソースはフォーム上のテキストボックスに表示されている   文字列を抽出条件にしたクエリにしています。 調べたところによると、DoCmd句は非同期処理ということでデータの作成が完了しなくとも 次の命令を実行する、ということは分かったのですが 今回の前提条件においてもデータを受け取れなかったから、レポートに表示できなかったという 判断をしてよいのでしょうか? 分かりにくい表現で恐縮ですがよろしくお願いいたします。

みんなの回答

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

かなり希望的観測ですが、プリンタの設定を変えて http://support.microsoft.com/default.aspx?scid=kb;ja;891594 より 「全ページ分のデータをスプールしてから 印刷データをプリンタに送る」が ON だった場合 印刷する文書の最終ページのスプールが終了するまで印刷は実行されません。この設定が ON になっている場合 ドキュメント全体を確実に印刷装置に送信する事ができます。」 かもしれない。 もう一つ別案 ローカルPCに一時テーブルを作成して currentDb.execute 削除クエリ currentDb.execute 追加クエリ Docmd.openreport ソースは一時テーブル で解決するかも。 さらにしつこくTransaction 処理を加えるとか RecordsAffected の数と一時テーブルのレコード数のチェックを加える とかすれば、おそらく大丈夫かと思います。

関連するQ&A