ACC: Cómo detecta tiempo de inactividad de usuario o de inactividad

Seleccione idioma Seleccione idioma
Id. de artículo: 128814 - Ver los productos a los que se aplica este artículo
Moderada: Requiere macro básico, codificación y las capacidades de interoperabilidad.
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se muestra cómo crear un procedimiento que se ejecutará si la aplicación Microsoft Access no detecta ninguna entrada de usuario para un período de tiempo especificado.

Este artículo se supone que está familiarizado con Visual Basic para aplicaciones y con la creación de aplicaciones de Microsoft Access mediante las herramientas de programación suministradas con Microsoft Access. Para obtener más información acerca de Visual Basic para aplicaciones, consulte el manual "Creación de aplicaciones".

Nota: Visual Basic para aplicaciones (se utiliza en Microsoft Access 7.0 y Microsoft Access 97) se denomina Access Basic en la versión 2.0.

Nota: En este artículo se explica una técnica demostrada en los archivos de ejemplo FrmSampl.exe (para Microsoft Access para Windows 95 versión 7.0) y FrmSmp97.exe (para Microsoft Access 97). Para más información acerca de cómo obtener estos archivos de ejemplo, consulte los siguientes artículos en Microsoft Knowledge Base:
150895ACC95: Formularios de ejemplo de Microsoft Access disponible en el Centro de descarga
175066ACC97: Microsoft Access 97 formularios de ejemplo disponible en el Centro de descarga

Más información

Cómo crear el formulario DetectIdleTime

  1. Cree un formulario en blanco que no se basa en ninguna tabla o consulta y asígnele el nombre DetectIdleTime.
  2. Establezca las siguientes propiedades del formulario:
    OnTimer: [Procedimiento de evento]
    TimerInterval: 1000
    Nota: El TimerInterval configuración indica la frecuencia (en milisegundos) la aplicación comprueba inactividad del usuario. Un valor de 1000 es igual a 1 segundo.
  3. Escriba el código siguiente para el procedimiento de evento de la propiedad OnTimer:

    Nota: En el siguiente ejemplo de código, un subrayado (_) al final de una línea se utiliza como un carácter de continuación de línea. Quite el carácter de subrayado del final de la línea cuando escriba este código en Access Basic.
          Sub Form_Timer()
             ' IDLEMINUTES determines how much idle time to wait for before
             ' running the IdleTimeDetected subroutine.
             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
    
             ' 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
    						
  4. Cree el procedimiento siguiente en el módulo de formulario:
           Sub IdleTimeDetected (ExpiredMinutes)
             Dim Msg As String
             Msg = "No user activity detected in the last "
             Msg = Msg & ExpiredMinutes & " minute(s)!"
             MsgBox Msg, 48
          End Sub
    						

Cómo utilizar el formulario DetectIdleTime

Para ocultar el formulario DetectIdleTime cuando se abre la aplicación, cree la siguiente macro AutoExec:
   Macro Name   Action
   ---------------------
   AutoExec     OpenForm

   AutoExec Actions
   ----------------------------
   OpenForm:
      Form Name: DetectIdleTime
      View: Form
      Filter Name:
      Where Condition:
      Data Mode: Edit
      Window Mode: Hidden
				
se puede agregar código al procedimiento IdleTimeDetected para que se ejecuta el procedimiento si no hay ninguna actividad de usuario para la cantidad de tiempo especificado en el valor constante IDLEMINUTES. Por ejemplo, podría tener salir con el siguiente procedimiento de evento de Microsoft Access:

En Microsoft Access 7.0 y 97:
   Sub IdleTimeDetected (ExpiredMinutes)
      Application.Quit acSaveYes
   End Sub
				
en Access 2.0:
   Sub IdleTimeDetected (ExpiredMinutes)
      Application.Quit A_SAVE
   End Sub
				
este procedimiento hace que Microsoft Access salir de la aplicación, guardar todos los objetos sin mostrar un cuadro de diálogo.

Referencias

Para obtener más información sobre el evento Timer, busque el índice de la Ayuda para el evento Timer .

Propiedades

Id. de artículo: 128814 - Última revisión: viernes, 19 de enero de 2007 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Palabras clave: 
kbmt kbhowto kbprogramming kbusage KB128814 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 128814
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com