Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2010)
一定時間後強制終了
投稿日時: 17/09/15 11:30:14
投稿者: monster_777

フォームのプロシージャで、
-------------------------
Private Sub Form_Timer()
DoCmd.OpenForm"F_警告"
End Sub
------------------------
 
警告がでてから、一定時間が経過すれば、強制終了するように設定しています。
------------------------
Private Sub Form_Timer()
DoCmd.Quit
End Sub
-----------------------
 
ここで、教えていただきたいのですが、
 
警告が出るまでの時間を、作業していない時間として設定するには、どうすれば良いでしょうか。
 
よろしくお願いします。
 

回答
投稿日時: 17/09/15 11:38:56
投稿者: sk

引用:
警告が出るまでの時間を、作業していない時間として設定するには、
どうすれば良いでしょうか。

「作業していない」という状態と
作業している」という状態を
具体的にどのように定義するか次第かと。

投稿日時: 17/09/15 11:53:11
投稿者: monster_777

ありがとうございます。
 
作業していないとは、
  書き込まれていない。
  ファーム内のタブが切り替わっていない。
 
 と、定義したいと考えています。
 
 
よろしくお願いします。

回答
投稿日時: 17/09/15 13:22:07
投稿者: hatena
投稿者のウェブサイトに移動

monster_777 さんの引用:
作業していないとは、
  書き込まれていない。
  ファーム内のタブが切り替わっていない。
 
 と、定義したいと考えています。
 

書き込み可能なコントロール(テキストボックス、コンボボックス等)の更新後処理(あるいは変更時)とタブコントロールの変更時のイベントプロシージャに下記のコードを追加すればいいでしょう。
 
Me.TimerInterval = 600000
 
10分間書き込みがないとタイマーイベントが発生します。

回答
投稿日時: 17/09/15 13:38:52
投稿者: sk

引用:
書き込まれていない。

・経過時間の測定はいつ(どのイベントが発生した時)から
 開始するのか?
 
何(どのオブジェクト/コントロール)に対して
 「書き込まれ」れば「作業している」ものとして扱うのか?
 
・(経過時間を格納するための変数がモジュールレベルで宣言されているとして)
 逆に「作業している」状態になった場合、
 それまでの経過時間はどのように扱うのか
 Timer イベントでのカウントアップを完全に止めてしまうのか、
 それとも経過時間をリセットして 0 秒から時間測定をやり直すのか?
 
・データ入力とは直接関係のない
 「マウスカーソルを移動した」
 「いずれかのキーをクリックした」
 といった単純な操作については無視してもよいのか?
 
・例えば、そのフォームが連結フォームである場合、
 そのフォーム上のいずれかの連結コントロールに対して
 データ入力を行なおうとすれば、そのフォームの
 Dirty イベントが発生し、またそのフォームの
 Dirty プロパティの値は True となるが、
 非連結フォームや非連結コントロールでは
 それらのイベント/プロパティを用いることは出来ないため、
 個々のコントロールのイベントで
 「作業していない/している」の判別を行なうしかない。
 
引用:
ファーム内のタブが切り替わっていない。

・少なくとも、タブコントロールは連結コントロールとしては
 使用出来ないため、Change イベントの発生を検知するしかない。

投稿日時: 17/09/15 14:52:11
投稿者: monster_777

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