通用资源访问检测是检测什么
介绍Access中的许多开发人员都需要能够检测用户何时处于非活动状态一段时间。 如果/在一定时间内未使用系统,要求运行某些程序是很常见的。 示例包括运行操作查询以更新数据,关闭数据库,甚至是一段时间未使用Access本身。
方法与在网络上可以找到的许多类似方法一样,我的方法是检测并记录当前所选表单的状态并在屏幕上进行控制。 不过,我走得更远,并检测项目中打开的所有表格和报告。 对于用户,尤其是那些主要进行数据输入的用户,在每次完成记录输入时最终会出现完全相同的对象的情况并不少见-因此给代码留下了深刻的印象,该代码仅检查当前选择了哪些对象(表单和控件),检查之间没有任何活动。 因此,检查当前控件中的当前数据也很重要。
以来
Twinnyfo的问题- 不活动检测问题-确保整个检测期间定期运行此过程也很重要。 如果在任何时候暂停检查,那么结果可能会产生误导。 码'IdleSince() returns the time of the last detected activity.
'NB. Code must run live (Full speed - Not tracing) to capture data correctly.
Public Function IdleSince(Optional ByVal blnSet As Boolean = False) As Date
Static strPrevState As String
Static datPrevious As Date
Dim strState As String
Dim objVar As Object
On Error Resume Next
With Screen
strState = strState & "," & .ActiveDatasheet.NAME
strState = strState & "," & .ActiveDatasheet.SelTop
strState = strState & "," & .ActiveDatasheet.SelLeft
strState = strState & "," & .ActiveForm.NAME
strState = strState & "," & .ActiveReport.NAME
strState = strState & "," & .ActiveControl.NAME
strState = strState & "," & .ActiveControl.Text
End With
On Error GoTo 0
strState = strState & ";Forms"
For Each objVar In Forms
strState = strState & "," & objVar.NAME
Next objVar
strState = strState & ";Reports"
For Each objVar In Reports
strState = strState & "," & objVar.NAME
Next objVar
'If we pop up a new form to notify the user then strState will change -
' even without human intervention - so we allow for this with blnSet.
If strState <> strPrevState Then
strPrevState = strState
If Not blnSet Then datPrevious = Now()
End If
IdleSince = datPrevious
End Function
...
If Now() >= DateAdd("n", 420, IdleSince()) Then ...
代码说明
这是关于检测非活动状态,而不是在找到后如何处理非活动状态,因此参数(blnSet)不太相关。 但是,出于好奇,添加了它是为了使代码能够在屏幕上显示一个表单,以通知用户不活动,并可能警告他们除非有活动,否则系统将在设定的时间内关闭自身。检测到。 显然,显示该表格将导致该程序在正常运行时检测活动,因此提供了blnSet作为替代。
代码块A第04-05行这些变量会记住先前调用的值。
第09-19行这些记录了Screen必须说的所有内容。 这些行中的某些可能引用未设置的对象-因此,围绕这些行的错误处理。
第20-27行这些行记录了所有可能打开的表单和报告。
第30-33行这些行在必要时保存当前状态。
第34行这将返回上次检测到活动的时间。
代码块A这就是调用此过程的方式。 在这种情况下,420是您要检查的分钟数。 满足此条件后,您可以运行所需的任何代码,这取决于不活动的时间长度。
结论尽管此操作无法检测到用户进行的鼠标移动或击键操作,但它确实可以检测到Access会话中几乎所有活动发生的情况。
翻译自: https://bytes.com/topic/access/insights/951897-inactivity-detection-access
通用资源访问检测是检测什么