2016-10-18 13 views
0

私は少しガイダンスを探しています。 SQLクエリを実行するサーバーに接続するAccess Appがあります。クエリを実行する前に接続(ping)をテストすることはできますが、接続が途中で途切れた場合(これはあまりにも頻繁に発生するようです)、正常に処理できません。エラー処理 - サーバー接続が失われました

私はその場でerr_Handingを持っていますが、私は、エラーメッセージのネストされたコレクションを、含め得るように見える:私は長時間のクエリのためにアカウントを行う

3146 - ODBC Error 
3151 - ODBC Connection Error 
3704 - Object is Closed 
2046 - Quit not available 
>> Requires Ctl-Break, or Task Mgr to break loose... 

:db.QueryTimeout = 0;私はこれらが私の今の問題だとは思わない。

私は最近、グローバル変数からTempVarsに変換したので、私のアプリはこれらの処理されたエラーや処理されなかったエラーで心を失いません。今私はわずかにコントロールを持っているようだが、私のAccess AppはErr Msg地獄にぶら下がっている。

LOST接続への私の所望の応答:

  • Accessから正常な終了を、現在の状態をキャプチャするためにFIEをログに記録する状況
  • 書き込みを発表ユーザへ

    1. トラップエラー条件
    2. メッセージを

    この必要性に対処するための任意の提案や指針はありますか?

    ありがとうございました!

  • 答えて

    0

    グローバル変数(VBA)を自由に使用することができ、コンパイルされたaccDEを使用すると値を失うことはありません。そのような変数のtempVarsへの変換は本当に必要ではありません。 accDE(コンパイルされたアプリケーション)は(エラー処理なしで)VBA値を失うことはないため、結果ははるかに堅牢で信頼性の高いアプリケーションになります。また、コンパイルされたaccDEは、VBAコードがコンパイルされないようにし、アプリケーションの設計を改ざんされないようにロックします。

    接続を失うことに関しては、現時点で実行可能な解決策はありません。バインドされたフォームとのセッションとの喪失時に、 http://support.microsoft.com/kb/210319

    しかしどのようにトラップODBCログオンエラーメッセージ:

    ACC2000:アプリケーションでは、このアプローチを使用することによって、あなたが接続して正常終了を確認することができます起動ネットワーク接続は、実際には罠に掛けられたり、優雅な荘園で処理されたりすることはできません。唯一の真の解決策は、接続の喪失に対処し、それを最初から防ぐことです。

    関連する問題