我正在创建一个Access DB,需要通过宏每300秒自动刷新一次。表单包含两个文本框: 1)REFRESH_INTERVAL(这里的间隔可以改变) 2)COUNTER(此字段应显示倒计时)
打开数据库时,MACRO(M_RUN ALL MACROS)应该第一次运行。 完成后,倒计时需要开始。 一旦达到0,宏(M_RUN ALL MACROS)应该再次运行。 完成后,倒计时应在300秒后重新开始,并且该过程应重复进行。 如果更改了字段REFRESH_INTERVAL,则倒计时应从该数字开始。
如果发现了几个检查网页的提示,但没有设法将这些部分放在一个工件上。 谁可以帮忙?
答案 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