スケジュール実行されている時のエラー表示方法

解決


けろけろ  2005-07-04 19:10:51  No: 90816  IP: [192.*.*.*]

DBのデータを抽出・加工してファイルを作成するプログラムがあります。
フォーム上に進捗状況を表示し、エラーが発生した場合MsgBox表示しています。
これをスケジュールされたタスクとしても実行したいのですが、ログインして
いない状態で実行された場合フォーム等表示されないようなので、エラー通知
方法をどうすればよいか悩んでいます。

・未ログインの状態でタスク開始→エラー発生→その後ログインした場合に、
エラーメッセージを表示させるようなことはできるのでしょうか?

・(それがダメなら)普通?に実行されている場合はMsgBox、未ログインの
状態で実行(画面なし)の場合はイベントログ出力、というように切り分ける
ことは可能でしょうか?

なにかヒントだけでもいただけるとありがたいです。

編集 削除
魔界の仮面弁士  2005-07-04 19:40:49  No: 90817  IP: [192.*.*.*]

VB6かな?


もし VB6 であれば、スケジュールで動作させるアプリの場合には、
App.UnattendedApp を False にしておくのが一般的かと思います。
プロジェクトのプロパティで、『対話型インターフェイスの抑制』に
チェックを入れてコンパイルしておけば、MsgBoxによる出力が、
イベントログへの出力に自動で切り替わります。

もし、ログインしているかどうかによって出力先の切り替えが必要なら、
通常時は MsgBox、スケジュール動作では App.LogEvent メソッドで
ログ出力するような設計にされてはいかがでしょうか。

編集 削除
魔界の仮面弁士  2005-07-04 19:45:38  No: 90818  IP: [192.*.*.*]

> App.UnattendedApp を False にしておくのが一般的かと思います。
すみません、逆です。(^^; True が一般的ですね。
http://www.microsoft.com/japan/developer/library/vb98/vbproUnattendedAppProperty.htm

サーバーアプリのように、MsgBoxを出せないような場面で使われる設定です。

編集 削除
けろけろ  2005-07-04 20:29:05  No: 90819  IP: [192.*.*.*]

魔界の仮面弁士様、レスありがとうございます。

あい、VB6です。
手動で実行するものとして作っていたら、いきなりスケジュール実行の
話がわいてでてオロオロしておりました。

まずは要件・設計を整理して、情報いただいたようにUnattendedApp
設定するなり、出力先を切り替えるなり(とりあえずは進捗フォームの
Visibleで判断できそうでした)検討したいと思います。

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

編集 削除