在一定的空闲时间后自动关闭表格

jak*_*ake 5 ms-access vba timer access-vba ms-access-2010

我的访问表单上有一点问题.

我有两种形式:

  • 菜单形式
  • 输入形式

输入表单空闲一分钟后,我想关闭它并返回菜单表单.

这是我的代码不起作用.

Public ExpireTime    As Date  'expiration time-date value

Sub ResetExpiration()             

    If ExpireTime <> 0 And ExpireTime > Now Then
        Application.OnTime ExpireTime, "FormExpire", schedule:=False
    End If

    ExpireTime = Now + 1 / 1440#    

    Application.OnTime ExpireTime, "FormExpire", schedule:=True

End Sub
Run Code Online (Sandbox Code Playgroud)

我还在其中创建了一个宏.

Sub FormExpire()
   Unload input-form
End Sub
Run Code Online (Sandbox Code Playgroud)

Pat*_*rez 1

您需要将其设置form.Timer为 60000(即 1 分钟),然后使用 on OnTimerevent 来检查某些属性是否已更改。下面我很快写了一些东西来给你一个想法,但它并不完整,也没有经过测试。

Option Compare Database
Option Explicit

Dim isIdle As Boolean


Private Sub Form_LostFocus()
    'you can use this event also
End Sub


Private Sub Form_Timer()
    Dim ctlName As String, wasDirty As Boolean
    If ctlName = vbNullString Then ctlName = Me.ActiveControl.Name
    If Me.ActiveControl <> ctlName Then isIdle = False
    If wasDirty <> Me.Dirty Then isIdle = False
    'more checks....
    If isIdle Then DoCmd.Close acForm, Me.Name
End Sub
Run Code Online (Sandbox Code Playgroud)