0

リンクされたテーブルを照会し、データに基づいてレポートを生成し、PDF プリンターを使用してレポートをディスクに保存する Access 用の VBA モジュールで作業しています。プライマリ フォームには、N 秒ごとに「JOBQUEUE」テーブルに対して Access クエリを実行して、新しいジョブがあるかどうかを確認するタイマーがあります。

データベース サーバーが使用できなくなった場合、この操作はもちろんタイムアウトになります。3051 の実行時エラーがログに記録されており、ループが続行しようとします。ただし、VB ランタイム エラーの直後に次のエラーが発生するため、ループを終了できません。

タイトルは「Microsoft SQL Server Login」なので、私が知る限り、VB 内にはありません。

Connection Failed:
SQLState: '01000'
SQL Server Error: 53
[Microsoft][ODBC SQL Server Driver][DBNETLIB][ConnectionOpen(Connect()).
Connection Failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not 
exist or access is denied.

このエラーに言及しているすべてのフォーラムとディスカッションで、質問者はエラーの原因に関心を持っています。この場合、エラーは一時的なものであり、インストールが無人であるため、接続を試行し続ける必要があると推測できます。DB に対してタイムアウトになると、アクセスは「応答なし...」状態になりますが、それも問題ありません。上記の MsgBox に入る前に接続が復元されれば、中断したところから再開されます。

できればプログラムでそのメッセージボックスをミュートできる方法を知っている人はいますか?しかし、この時点でRDPセッションではないリモートで実行できるものは何でも使用します。

編集:画像へのリンク

4

1 に答える 1

1

私が受け取ったエラーは、コードからキャッチできる実行時エラーではありませんでした。むしろ、VBAモジュールで実行時にタイムアウトを飲み込んで却下した後のSQLタイムアウトでした。

リンクされたテーブルに対してクエリを実行するループをリセットする新しいタイマーを導入したため、エラーは表示されないようです。ログに記録して飲み込むことはできませんが、実行時のタイムアウトの処理方法を賢くすることで防ぐことができます。

于 2013-03-07T17:35:55.093 に答える