首页 > 解决方案 > 在 Access 数据库中的窗体上手动重新启动倒数计时器

问题描述

我有以下代码可以自动注销 Access 用户。

大多数工作将在 5 分钟或更短的时间内完成,但我想在计数器下方添加一个手动重置按钮,以便在需要时重新启动计时器。

如果需要,我想强制最终用户手动重新启动计时器。

Option Compare Database
Dim TimeCount As Long

Private Sub Form_Open(Cancel As Integer)

Me.TimerInterval = 1000

End Sub

Private Sub Form_Timer()
TimeCount = TimeCount + 1
Me.txtCounter.Value = 1200 - TimeCount
If TimeCount = 1201 Then
    DoCmd.Quit acQuitSaveAll
End If
End Sub

我怎样才能完成这项任务?

标签: formsms-accesstimecounter

解决方案


如果用户处于非活动状态,我有退出 Access 的代码。我知道这不是你要找的,但它可能会帮助你......如果不是,祝你好运!

创建一个名为DetectIdleTime的表单。在将 Window Mode 设置为 Hidden 的情况下加载数据库时打开它。

在 DetectIdletime 属性中的 OnTimer 事件中...

子Form_Timer()

     Const IDLEMINUTES = 5

     Static PrevControlName As String
     Static PrevFormName As String
     Static ExpiredTime

     Dim ActiveFormName As String
     Dim ActiveControlName As String
     Dim ExpiredMinutes

     On Error Resume Next

     ActiveFormName = Screen.ActiveForm.Name
     If Err Then
        ActiveFormName = "No Active Form"
        Err = 0
     End If

     ActiveControlName = Screen.ActiveControl.Name
        If Err Then
        ActiveControlName = "No Active Control"
        Err = 0
     End If

     If (PrevControlName = "") Or (PrevFormName = "") _
       Or (ActiveFormName <> PrevFormName) _
       Or (ActiveControlName <> PrevControlName) Then
        PrevControlName = ActiveControlName
        PrevFormName = ActiveFormName
        ExpiredTime = 0
     Else

        ExpiredTime = ExpiredTime + Me.TimerInterval
     End If

     ExpiredMinutes = (ExpiredTime / 1000) / 60
     If ExpiredMinutes >= IDLEMINUTES Then
        ExpiredTime = 0
        IdleTimeDetected ExpiredMinutes
     End If
  End Sub

将 DetectIdleTime 表单上的 Timer Interval 事件设置为 1000

现在,如果用户不移动鼠标,Access 将关闭...


推荐阅读