> On Fri, 26 Dec 2008 08:07:00 -0800, WestWingFan
> <WestWingFan[ at ]discussions.microsoft.com> wrote:
>
> I wouldn't use the Bookmark, but the value of the PK field. So to the
> static variables add one for the Pk Value, and compare it with the
> current value.
>
> -Tom.
> Microsoft Access MVP
>
>
> >I've added the User Idle Time code and form from:
> >
http://support.microsoft.com/?id=210297. It works great, with one little
> >problem. It is common for my users to have the same form and same control for
> >a fair amount of time, but not the same record. Any ideas about how to do
> >this? I tried adapting the code (shown below) to use the bookmark property to
> >see if the user has changed records, but it is not working (when I change
> >records and nothing else, the idletimedetected subroutine still fires. Any
> >ideas?
> >
> >Thanks in advance for your help!
> >
> >Private Sub Form_Timer()
> > ' IDLEMINUTES determines how much idle time to wait for before
> > ' running the IdleTimeDetected subroutine.
> > Const IDLEMINUTES = 1
> >
> > Static PrevRecordNum As String
> > Static PrevControlName As String
> > Static PrevFormName As String
> > Static ExpiredTime
> >
> > Dim ActiveFormName As String
> > Dim ActiveControlName As String
> > Dim ActiveRecordNum 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
> >
> > ActiveRecordNum = Screen.ActiveForm.RecordsetClone.Bookmark
> > If Err Then
> > ActiveRecordNum = "No Active Record"
> > 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) _
> > Or (ActiveRecordNum <> PrevRecordNum) Then
> > PrevControlName = ActiveControlName
> > PrevFormName = ActiveFormName
> > PrevRecordNum = ActiveRecordNum
> > 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
> > 'from
http://support.microsoft.com/?id=210297> >
> >End Sub
>