Come determinare chi è connesso a un database usando Microsoft Jet UserRoster in Access

Avanzate: richiede competenze esperte di codifica, interoperabilità e multiutente.

Questo articolo si applica a un file di database di Microsoft Access (con estensione .mdb) oppure a un file di database di Microsoft Access (con estensione .accdb).

Riepilogo

Questo articolo illustra come usare Microsoft Visual Basic, Applications Edition per restituire un elenco di utenti connessi a un database.

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. I tecnici di supporto tecnico Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessuno caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze.

Quando si usa il codice di esempio seguente, vengono restituite le informazioni seguenti:

  • Nome computer.
  • Nome accesso.
  • Indica se l'utente è attualmente connesso al database. L'ID di un utente rimane nel database di blocco fino a quando l'ultimo utente non si disconnette o finché lo slot non viene recuperato per una nuova connessione utente.
  • Indica se la connessione utente è stata terminata in circostanze normali.

Queste informazioni possono essere usate anche per isolare i problemi relativi al danneggiamento del database associati alle attività di un utente specifico.

Procedura

Attenzione

Se si segue la procedura descritta in questo esempio, si modifica il database di esempio Northwind.mdb. È possibile eseguire il backup del file Northwind.mdb e seguire questa procedura in una copia del database.

Per determinare chi è connesso a un database, seguire questa procedura:

  1. Aprire il database di esempio Northwind.mdb.

    Nota In Access 2007 aprire il database di esempio Northwind2007, chiudere il database di esempio Northwind2007 e quindi riaprire il database di esempio Northwind2007.

  2. Scegliere Oggetti di database dal menu Visualizza e quindi fare clic su Moduli.

    Nota In Access 2007 fare clic su Visual Basic nel gruppo Macro della scheda Strumenti di database .

  3. Fare clic su Nuova regola.

    Nota In Access 2007 fare clic su Modulo nel menu Inserisci nella Editor di Visual Basic.

  4. Digitare o incollare il codice seguente:

    Nota Il codice di esempio in questo articolo usa Oggetti dati Microsoft ActiveX. Per l'esecuzione corretta di questo codice, è necessario fare riferimento alla libreria microsoft ActiveX Data Objects 2.1 o versione successiva. A tale scopo, fare clic su Riferimenti nel menu Strumenti in Visual Basic Editor e verificare che la casella di controllo Libreria di Microsoft ActiveX Data Objects 2.1 sia selezionata.

    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. Salvare il modulo come ShowUsers.

  6. Premere CTRL+G per aprire la finestra immediata.

  7. Digitare la riga seguente nella finestra Immediata e quindi premere INVIO:

    ShowUserRosterMultipleUsers
    
    

    Si noti che la finestra Immediata restituisce un elenco di utenti connessi al database.