MS-Access中的倒数计时器

时间:2017-01-31 14:31:32

标签: ms-access access-vba

我正在创建一个Access DB,需要通过宏每300秒自动刷新一次。表单包含两个文本框: 1)REFRESH_INTERVAL(这里的间隔可以改变) 2)COUNTER(此字段应显示倒计时)

打开数据库时,MACRO(M_RUN ALL MACROS)应该第一次运行。 完成后,倒计时需要开始。 一旦达到0,宏(M_RUN ALL MACROS)应该再次运行。 完成后,倒计时应在300秒后重新开始,并且该过程应重复进行。 如果更改了字段REFRESH_INTERVAL,则倒计时应从该数字开始。

如果发现了几个检查网页的提示,但没有设法将这些部分放在一个工件上。 谁可以帮忙?

1 个答案:

答案 0 :(得分:0)

此响应假设您能够获得有关计时器事件的用户输入。我建议您将计时器事件设置为您希望倒计时器刷新的频率。使用公共变量可以保持已经过的间隔的运行总和,并且当累积时间超过刷新间隔时,运行宏并重置公共变量,跟踪累积的时间总和。我已将刷新率设置为1秒,但根据您的操作,这对于尝试与其他表单进行交互的用户来说非常讨厌。

基本上你在这里做的是创建一个Form_Load事件来设置定时器间隔(默认为1秒(1000毫秒))并设置你想要倒计时的总秒数宏运行。

如果用户决定更改刷新间隔,则会在AfterUpdate文本框中运行REFRESH_INTERVAL事件。

最后一个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