2017-01-31 49 views
0

マクロを使用して300秒ごとに自動リフレッシュするAccess DBを作成しています。 REFRESH_INTERVAL(ここで間隔を変更することができます) 2)COUNTER(このフィールドはカウントダウン表示する必要があります)MS-Accessのカウントダウンタイマー

DBが開かれ、MACRO(M_RUNすべてのマクロ)) 1:フォームと呼ばれる2つのテキストボックスが含まれています初めて実行する必要があります。 完了したら、カウントダウンを開始する必要があります。 0に達すると、マクロ(M_RUN ALL MACROS)が再び実行されます。 カウントダウンが完了すると、300秒後に再開し、プロセスはそれ自身を繰り返す必要があります。 フィールドREFRESH_INTERVALが変更された場合、カウントダウンはその番号から開始する必要があります。

ウェブをチェックするヒントがいくつか見つかりましたが、1つのワークピースにピースを合わせることはできませんでした。 誰が助けることができますか?

+0

フォームのOnTimerイベントを見たいと思うでしょう。マイクロソフトの公式ページでは、このページは少なくとも実用的な例を提供しています。http://www.blueclaw-db.com/access_event_programming/timer.htm –

+0

5分間隔でオンタイマーを稼動させました。しかし、私はカウントダウンをフォームに表示したい。そのため、2つのテキストボックスを作成して表示し、必要に応じて間隔時間を調整しました。 –

答えて

0

この応答は、タイマーイベントに対してユーザーの入力を取得できることを前提としています。私が提案しているのは、タイマーイベントをカウントダウンタイマーでリフレッシュする頻度に設定することです。パブリック変数を使用すると、経過したインターバルの合計を保持し、その累積時間がリフレッシュ間隔を超えたときにマクロを実行し、累積合計時間を追跡しているパブリック変数をリセットすることができます。私はリフレッシュレートを1秒に設定しましたが、あなたがやっていることによっては、これは他のフォームとやり取りしようとするユーザーにとっては本当に嫌なことがあります。

基本的には、イベントを作成してタイマー間隔(デフォルトは1秒(1000ミリ秒))を設定し、カウントダウンする秒数をマクロが実行されるまで設定します。

また、あなたのREFRESH_INTERVALテキストボックスにAfterUpdateイベントは、ユーザーが更新間隔を変更することを決定した場合に実行される。最後に

時間過去を監視し、累積時間が上回ったら、マクロを実行すると、タイマーがリセットされますForm_TimerイベントREFRESH_INTERVAL

Option Compare Database 
Public lTimer As Long 
Public lTimeTotal As Long 


Private Sub Form_Load() 
If IsNull(Me.REFRESH_INTERVAL) Then 
    Me.TimerInterval = 1000 
    Me.lTimeTotal = 300000 
Else 
    Me.TimerInterval = Me.REFRESH_INTERVAL * 1000 
End If 

End Sub 

Private Sub Form_Timer() 

lTimer = lTimer + Me.TimerInterval 

If lTimer >= lTimeTotal Then 
    DoCmd.RunMacro "M_RUN ALL MACROS" 
    Me.COUNTER = 0 
    Me.COUNTER = lTimeTotal/1000 & " Seconds Remaining..." 
Else 
    Me.COUNTER = Int((lTimeTotal - lTimer)/1000) & " Seconds Remaining..." 
End If 
DoEvents 
End Sub 


Private Sub REFRESH_INTERVAL_AfterUpdate() 
lTimeTotal = Me.REFRESH_INTERVAL * 1000 
End Sub