定时器每30分钟运行一次代码

时间:2014-05-20 10:52:19

标签: vba ms-access access-vba

由于我处于开发模式,我的前端需要大量更新。 这是我在用户尝试打开前端时检查版本的功能:

Public Function FEPath(DBName As String)

Dim Conn As New ADODB.Connection
Dim DataConn As New ADODB.Recordset
Dim Comm As String
Dim strPath As String
Dim strDB As String
Dim strVer As String
Dim strExt As String

Comm = " SELECT tblFE.Database, tblFE.Version, tblFE.Extension " & _
        " FROM tblFE WHERE tblFE.[Database] = '" & DBName & "';"

Set Conn = CurrentProject.Connection
DataConn.Open Comm, Conn, adOpenKeyset, adLockOptimistic

With DataConn
    strDB = ![Database]
    strVer = ![Version]
    strExt = ![Extension]

    strPath = "C:\Databases\" & strDB & " " & strVer & strExt

    .Close
End With

Set Conn = Nothing

我需要以某种方式每30分钟运行一段代码,而前端是打开的,以检查是否有可用于上传的新前端版本。然后我会通知用户,关闭数据库,并更新到新版本。现在,数据库打开时总是会发生版本更新。怎么办呢?

谢谢。

1 个答案:

答案 0 :(得分:5)

MS Access程序员使用的一个老技巧。在数据库启动时使用autoexec宏打开隐藏的表单。然后,您可以使用Form_Timer event来触发您经常运行的任何代码。

TimerInterval form property使用毫秒,因此您可以手动将其设置为1800000(1000 * 60 * 30),也可以使用隐藏表单的on_load事件进行设置。我通常会选择选项2,因此它会在某处的代码中拼写出来。

Sub Form_Load()
    Me.TimerInterval = 1000 * 60 * 30 ' 30 minutes
End Sub

Sub Form_Timer()
    ' check the front end version here
End Sub

*注意:在加载事件中设置TimerInterval还允许您在开发时将其设置为0(实际上将其关闭)。我不希望你需要30分钟的计时器,但是当你每1/4秒运行一次时,表格计时器在你开发其他地方时会很麻烦。数据库应用程序。