Comment déterminer qui est connecté à une base de données à l’aide de Microsoft Jet UserRoster dans Access

Avancé : nécessite des compétences d’experts en codage, en interopérabilité et en multi-utilisateur.

Cet article s’applique à un fichier de base de données Microsoft Access .MDB ou .ACCDB.

Résumé

Cet article explique comment utiliser Microsoft Visual Basic pour Applications pour générer une liste d’utilisateurs connectés à une base de données.

Microsoft fournit des exemples de programmation à titre d’illustration uniquement, sans garantie expresse ou implicite. Cela inclut, sans y être limité, les garanties implicites de commercialisation et d’adaptation à un but en particulier. Cet article considère que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support Microsoft peuvent expliquer la fonctionnalité d’une procédure en particulier. Toutefois, 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.

Lorsque vous utilisez l’exemple de code suivant, les informations suivantes sont retournées :

  • Nom de l’ordinateur.
  • Nom d’ouverture de session.
  • Indique si l’utilisateur est actuellement connecté à la base de données. (L’ID d’un utilisateur reste dans la base de données de verrouillage jusqu’à ce que le dernier utilisateur se déconnecte ou que l’emplacement soit récupéré pour une nouvelle connexion utilisateur.)
  • Indique si la connexion utilisateur a été arrêtée ou non dans des circonstances normales.

Ces informations peuvent également être utilisées pour isoler les problèmes liés à l’altération de la base de données associée aux activités d’un utilisateur spécifique.

Procedure

Attention

Si vous suivez les étapes décrites dans cet exemple, vous modifiez l’exemple de base de données Northwind.mdb. Vous pouvez sauvegarder le fichier Northwind.mdb et suivre ces étapes sur une copie de la base de données.

Pour déterminer qui est connecté à une base de données, procédez comme suit :

  1. Ouvrez l’exemple de base de données Northwind.mdb.

    Note Dans Access 2007, ouvrez l’exemple de base de données Northwind2007, fermez l’exemple de base de données Northwind2007, puis rouvrez l’exemple de base de données Northwind2007.

  2. Dans le menu Affichage, pointez sur Objets de base de données, puis cliquez sur Modules.

    Note Dans Access 2007, cliquez sur Visual Basic dans le groupe Macro sous l’onglet Outils de base de données .

  3. Cliquez sur Nouveau.

    Note Dans Access 2007, cliquez sur Module dans le menu Insertion du Rédacteur Visual Basic.

  4. Tapez ou collez le code suivant :

    Note L’exemple de code de cet article utilise Microsoft ActiveX Data Objects. Pour que ce code s’exécute correctement, vous devez référencer la bibliothèque Microsoft ActiveX Data Objects 2.1 ou ultérieure. Pour ce faire, cliquez sur Références dans le menu Outils de la Rédacteur Visual Basic, puis vérifiez que la zone case activée Bibliothèque Microsoft ActiveX Data Objects 2.1 est cochée.

    Sub ShowUserRosterMultipleUsers()
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
    
        Set cn = CurrentProject.Connection
    
        ' The user roster is exposed as a provider-specific schema rowset
        ' in the Jet 4.0 OLE DB provider. You have to use a GUID to
        ' reference the schema, as provider-specific schemas are not
        ' listed in ADO's type library for schema rowsets
    
        Set rs = cn.OpenSchema(adSchemaProviderSpecific, _
        , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
    
        'Output the list of all users in the current database.
    
        Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
        "", rs.Fields(2).Name, rs.Fields(3).Name
    
        While Not rs.EOF
            Debug.Print rs.Fields(0), rs.Fields(1), _
            rs.Fields(2), rs.Fields(3)
            rs.MoveNext
        WEnd
    
    End Sub
    
  5. Enregistrez le module sous ShowUsers.

  6. Appuyez sur Ctrl+G pour ouvrir la fenêtre Exécution.

  7. Tapez la ligne suivante dans la fenêtre Exécution, puis appuyez sur Entrée :

    ShowUserRosterMultipleUsers
    
    

    Notez que la fenêtre Exécution renvoie la liste des utilisateurs qui sont connectés à la base de données.