automatic logoff

D

Dennis Wolf

I have a database that is on a server. Several users have access to it and
utilize it from various PCs. Can I integrate an event/macro that will
automatically save the latest changes and then logoff (i.e. close the
database) after a specific time of non-usage?
thanks
Dennis
 
A

Arvin Meyer [MVP]

Dennis Wolf said:
I have a database that is on a server. Several users have access to it and
utilize it from various PCs. Can I integrate an event/macro that will
automatically save the latest changes and then logoff (i.e. close the
database) after a specific time of non-usage?

Try this code from Dev Ashish:

Sub Form_Timer()
' IDLEMINUTES determines how much idle time to wait for before
' running the IdleTimeDetected subroutine.
Const IDLEMINUTES = 110
'since 65535 is just over a minute
'setting IDLEMINUTES to 110 means that
'the sub would execute after 120.1475 minutes

Static PrevControlName As String
Static PrevFormName As String
Static ExpiredTime

Dim ActiveFormName As String

Dim ActiveControlName As String
Dim ExpiredMinutes

On Error Resume Next

' 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
Else
' ...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 call the IdleTimeDetected subroutine.
IdleTimeDetected ExpiredMinutes
End If
End Sub

Sub IdleTimeDetected(ExpiredMinutes)
Application.Quit acSaveYes
End Sub
--
Arvin Meyer, MCP, MVP
Microsoft Access
Free Access downloads
http://www.datastrat.com
http://www.mvps.org/access
 
D

Dennis Wolf

thanks Arvin, could you tell me where to insert that code to make it active
on all the forms in the database.
Thanks again
Dennis
 
I

inbreda

I have implemented this kind of thing on my multi user database, but because
users do a number of inputs into forms, and then end up looking at a report
(based on their form inputs) the code doesn't work - [resumably because the
final focus is on a report rather than a form.

Anyone got ideas how I get around this?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top