DBのデータを抽出・加工してファイルを作成するプログラムがあります。
フォーム上に進捗状況を表示し、エラーが発生した場合MsgBox表示しています。
これをスケジュールされたタスクとしても実行したいのですが、ログインして
いない状態で実行された場合フォーム等表示されないようなので、エラー通知
方法をどうすればよいか悩んでいます。
・未ログインの状態でタスク開始→エラー発生→その後ログインした場合に、
エラーメッセージを表示させるようなことはできるのでしょうか?
・(それがダメなら)普通?に実行されている場合はMsgBox、未ログインの
状態で実行(画面なし)の場合はイベントログ出力、というように切り分ける
ことは可能でしょうか?
なにかヒントだけでもいただけるとありがたいです。
VB6かな?
もし VB6 であれば、スケジュールで動作させるアプリの場合には、
App.UnattendedApp を False にしておくのが一般的かと思います。
プロジェクトのプロパティで、『対話型インターフェイスの抑制』に
チェックを入れてコンパイルしておけば、MsgBoxによる出力が、
イベントログへの出力に自動で切り替わります。
もし、ログインしているかどうかによって出力先の切り替えが必要なら、
通常時は MsgBox、スケジュール動作では App.LogEvent メソッドで
ログ出力するような設計にされてはいかがでしょうか。
> App.UnattendedApp を False にしておくのが一般的かと思います。
すみません、逆です。(^^; True が一般的ですね。
http://www.microsoft.com/japan/developer/library/vb98/vbproUnattendedAppProperty.htm
サーバーアプリのように、MsgBoxを出せないような場面で使われる設定です。
魔界の仮面弁士様、レスありがとうございます。
あい、VB6です。
手動で実行するものとして作っていたら、いきなりスケジュール実行の
話がわいてでてオロオロしておりました。
まずは要件・設計を整理して、情報いただいたようにUnattendedApp
設定するなり、出力先を切り替えるなり(とりあえずは進捗フォームの
Visibleで判断できそうでした)検討したいと思います。
ありがとうございました。
ツイート | ![]() |