VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/12/26(Fri) 12:18
投稿者ak
Eメール
URL
タイトルRe: QueryUnloadとUnloadModeについて

> VBとSQL-SERVER2000でC/Sシステムを構築しています。アプリの起動時にDB上にログを書込み
> 終了時にログを削除するというものです。しかしユーザーによっては、フォームをタスクバーに
> 隠したままWindowsの終了をしてしまうようなアホがいて、ログ情報が消えずに残ります。

最初に言っておきますが、エンドユーザーの事を『アホ』と言うのは如何なものかと
思いますよ。
PCの知識のあまりない人でも簡単に使用できるアプリケーションを構築するのが
我々技術者の腕の見せ所です。こんな事も分からないのかと思っているうちは良い
システムは構築できないでしょう。

> で、FORMのQueryUnloadイベントにWindowsの終了によってフォームが閉じられた場合、ログ削除する
> という命令をコーディングして、うまくいきました!同じようにタスクマネージャから閉じられる時
> にもログ削除するようにしているのですが、削除されません。 どうしてなんでしょう?

> Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
>
> If UnloadMode = vbAppWindows Or UnloadMode = vbAppTaskManager Then
>    Call ログ削除
> End If
>
> End Sub

デバッグは行ったのでしょうか?

答えから言っておくと、タスクマネージャーから終了されようが、ウィンドウズが終了されようが
終了時に必ずQueryUnloadイベントは発生します。もちろんUnloadModeもそれぞれの値が入ってきます。

但しQueryUnloadイベントの発生順はロードされた順に発生します。

例えばログ削除処理を行っているフォームの前にロードされたフォーム内で終了処理(End)を
しているとログ削除処理を行っているフォームのイベントは発生しません。

フォーム単体でテストしてみてください。
ちゃんとイベントが発生しUnloadModeも値が入ってきているはずです。

ということはそちらのプログラムのバグの可能性が高いです。
ログ削除処理のあるフォームのQueryUnloadイベントにたどり着くまでに他のフォームのイベントで
終了処理(End)されているとかエラーで落ちているとか原因は色々考えられます。

それらの問題を全てテストした上でQueryUnloadイベントがおかしいというのなら分かりますが
テストせずにQueryUnloadイベントの質問をするのはどうかと思います。

まず自分の作ったプログラムを疑ってかかるべきです。

エンドユーザーの事を『アホ』と言う前にプログラムに対する取り組み方を見直した方が良いと
思いますよ。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -