Jak určit, kdo je přihlášený k databázi pomocí microsoft Jet UserRoster v Accessu

Pokročilé: Vyžaduje odborné kódování, interoperabilitu a víceuživatelské dovednosti.

Tento článek se týká souboru databáze Microsoft Access (MDB) nebo souboru databáze Microsoft Access (.accdb).

Souhrn

Tento článek popisuje, jak pomocí jazyka Microsoft Visual Basic for Applications vytvořit výstup seznamu uživatelů, kteří jsou přihlášeni k databázi.

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené, včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Technici podpory společnosti Microsoft mohou pomoci vysvětlit funkce konkrétního postupu. Nebudou však upravovat tyto příklady tak, aby poskytovaly přidanou funkcionalitu nebo sestavovaly postupy, které splňují vaše specifické požadavky.

Při použití následujícího ukázkového kódu se vrátí následující informace:

  • Název počítače.
  • Přihlašovací jméno.
  • Určuje, jestli je uživatel aktuálně připojený k databázi. (ID uživatele zůstane v databázi zámků, dokud se poslední uživatel neodpojí nebo dokud se slot nesvolá pro nové připojení uživatele.)
  • Určuje, jestli se za normálních okolností ukončilo připojení uživatele.

Tyto informace lze také použít k izolaci problémů s poškozením databáze, které je spojené s aktivitami konkrétního uživatele.

Postup

Upozornění

Pokud budete postupovat podle kroků v tomto příkladu, upravíte Northwind.mdb ukázkové databáze. Můžete chtít zálohovat soubor Northwind.mdb a postupovat podle těchto kroků v kopii databáze.

Chcete-li zjistit, kdo je přihlášen k databázi, postupujte takto:

  1. Otevřete ukázkovou databázi Northwind.mdb.

    Poznámka V Accessu 2007 otevřete ukázkovou databázi Northwind2007, zavřete ukázkovou databázi Northwind2007 a znovu otevřete ukázkovou databázi Northwind2007.

  2. V nabídce View (Zobrazení) přejděte na Database Objects (Databázové objekty) a potom klikněte na Modules (Moduly).

    Poznámka V Accessu 2007 klikněte na Visual Basic ve skupině Makro na kartě Databázové nástroje .

  3. Klikněte na Nový.

    Poznámka V accessu 2007 klikněte na Modul v nabídce Vložit v Editor Jazyka Visual Basic.

  4. Zadejte nebo vložte následující kód:

    Poznámka Ukázkový kód v tomto článku používá datové objekty Microsoft ActiveX. Aby tento kód fungoval správně, je nutné odkazovat na knihovnu Microsoft ActiveX Data Objects 2.1 nebo novější verze. Uděláte to tak, že kliknete na Odkazy v nabídce Nástroje v Editor Jazyka Visual Basic a ujistěte se, že je zaškrtnuté políčko Knihovna Microsoft ActiveX Data Objects 2.1.

    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. Uložte modul jako ShowUsers.

  6. Stisknutím kombinace kláves CTRL+G otevřete okamžité okno.

  7. Do okna Immediate zadejte následující řádek a stiskněte klávesu ENTER:

    ShowUserRosterMultipleUsers
    
    

    Všimněte si, že okno Immediate vrátí seznam uživatelů, kteří jsou přihlášeni k databázi.