Contact US

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Microsoft: Access Other topics FAQ

Access Howto:

How do I Close Access after (x) amount of time of no use by jimmythegeek
Posted: 28 Nov 01 (Edited 27 Sep 07)

Just copy the following code to the "Timer" event of any form you think your users may keep open for an extended period of time. It can be on multiple forms if you wish, but is usually used on the main form or switchboard.

You only have to do 2 things:

1) Change is the IDLEMINUTES value. Right now it is set to one minute. Change it to the number of minutes you wish before the application is shut (30 or 60 is common).
2) Set the "Timer Interval" property on the form to the value that you want to run the code (1000 = 1 second). I usually set it for 5 minutes (300000).

That's it.

Private Sub Form_Timer()
On Error Resume Next
    '  IDLEMINUTES determines how much idle time to wait for before running the IdleTimeDetected subroutine
    Const IDLEMINUTES = 1
    Static PrevControlName As String
    Static PrevFormName As String
    Static ExpiredTime
    Dim ActiveFormName As String
    Dim ActiveControlName As String
    Dim ExpiredMinutes
    '  Get the active form and control name.
    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
    '  Record the current active names and reset ExpiredTime if:
    '  1.  They have not been recorded yet (code is running for the first time).
    '  2.  The previous names are different than the current ones (the user has done something different during the timer interval).
    If (PrevControlName = "") Or (PrevFormName = "") Or (ActiveFormName <> PrevFormName) Or (ActiveControlName <> PrevControlName) Then
        PrevControlName = ActiveControlName
        PrevFormName = ActiveFormName
        ExpiredTime = 0
        ' ... otherwise the user was idle during the time interval, so increment the total expired time.
        ExpiredTime = ExpiredTime + Me.TimerInterval
    End If
    '  Does the total expired time exceed the IDLEMINUTES?
    ExpiredMinutes = (ExpiredTime / 1000) / 60
    If ExpiredMinutes >= IDLEMINUTES Then

     '.... if so, then reset the expired time to zero ...
        ExpiredTime = 0
        '.... and quit the application
        Application.Quit acQuitSaveAll
    End If
End Sub

Jim Lunde

Back to Microsoft: Access Other topics FAQ Index
Back to Microsoft: Access Other topics Forum

My Archive

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close