Numéro d'article: 210297 - Dernière mise à jour: mardi 28 avril 2009 - Version: 4.0

Comment faire pour détecter les temps d'inactivité utilisateur ou d'inactivité dans Access 2000

A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.

Sommaire

Agrandir tout | Réduire tout

Résumé

Cet article vous montre comment créer une procédure qui s'exécute que si votre application Access ne détecte pas toute entrée d'utilisateur pour une période donnée. Elle implique la création d'un formulaire masqué contenant du code qui conserve le nombre de périodes d'inactivité.

Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie expresse ou implicite. Cela inclut, mais n'est pas limité à, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous aider à comprendre la fonctionnalité d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.

RemarqueL'utilisation de ce code pour ajouter des enregistrements à une table lorsqu'une base de données est inactif peut entraîner la consommation de mémoire excessive.

Comment faire pour créer le formulaire DetectIdleTime

  1. Créer un formulaire vide qui n'est pas basé sur n'importe quelle table ou requête et nommez-la DetectIdleTime.
  2. Définissez les propriétés de formulaire suivantes :
       OnTimer: [Event Procedure]
       TimerInterval: 1000
    						
    Remarque : le paramètre TimerInterval indique la fréquence (en millisecondes) l'application vérifie l'inactivité de l'utilisateur. Une valeur de 1 000 est égale à 1 seconde.
  3. Définissez la propriété OnTimer sur la procédure événementielle suivante :
    Sub Form_Timer()
       ' 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
    
       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. Créez la procédure suivante dans le module de formulaire :
    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
    
    					

Comment faire pour utiliser le formulaire DetectIdleTime

Pour masquer le formulaire DetectIdleTime lorsque l'application s'ouvre, créez la macro AutoExec suivante :
   Macro Name   Action
   ----------------------------
   AutoExec     OpenForm


   AutoExec Action Arguments
   ----------------------------
   OpenForm
   Form Name: DetectIdleTime
   View: Form
   Filter Name:
   Where Condition:
   Data Mode: Edit
   Window Mode: Hidden
				
vous pouvez ajouter du code à la procédure IdleTimeDetected afin que la procédure s'exécute, s'il n'y a aucune activité utilisateur pour la quantité de temps spécifié dans la valeur de constante IDLEMINUTES. Par exemple, vous pourriez avoir accès quitter avec la procédure événementielle suivante :
Sub IdleTimeDetected (ExpiredMinutes)
   Application.Quit acSaveYes
End Sub
				
cette procédure, Access quitter l'application, l'enregistrement de tous les objets sans afficher de boîte de dialogue.




Références

Pour plus d'informations sur l'événement Timer, dans Visual Basic Editor, cliquez sur Aide sur Microsoft Visual Basic dans le menu aide, tapez événement Timer dans le Compagnon Office ou l'aide intuitive et puis cliquez sur Rechercher pour afficher la rubrique.













Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Access 2000 Standard Edition
Mots-clés : 
kbmt kbhowto kbhowtomaster kbprogramming KB210297 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 210297  (http://support.microsoft.com/kb/210297/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.