Como determinar quem tem sessão iniciada numa base de dados com o Microsoft Jet UserRoster no Access

Avançado: requer codificação especializada, interoperabilidade e competências multiutilizadas.

Este artigo aplica-se a um ficheiro de base de dados do Microsoft Access (.mdb) ou a um ficheiro de base de dados do Microsoft Access (.accdb).

Resumo

Este artigo mostra-lhe como utilizar o Microsoft Visual Basic for Applications para exportar uma lista de utilizadores com sessão iniciada numa base de dados.

A Microsoft fornece exemplos de programação apenas a título informativo, sem qualquer garantia expressa ou implícita, incluindo, sem limitações, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador está familiarizado com a linguagem de programação demonstrada e as ferramentas utilizadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um procedimento específico. No entanto, não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às suas necessidades específicas.

Quando utiliza o seguinte código de exemplo, são devolvidas as seguintes informações:

  • Nome do computador.
  • Nome do início de sessão.
  • Se o utilizador está ou não ligado à base de dados. (O ID de um utilizador permanece na base de dados de bloqueio até que o último utilizador se desligue ou até que o bloco seja recuperado para uma nova ligação de utilizador.)
  • Se a ligação do utilizador foi ou não terminada em circunstâncias normais.

Estas informações também podem ser utilizadas para isolar problemas com danos na base de dados associados às atividades de um utilizador específico.

Procedimento

Atenção

Se seguir os passos neste exemplo, modifique a base de dados de exemplo Northwind.mdb. Poderá querer fazer uma cópia de segurança do ficheiro Northwind.mdb e seguir estes passos numa cópia da base de dados.

Para determinar quem tem sessão iniciada numa base de dados, siga estes passos:

  1. Abra a base de dados de exemplo Northwind.mdb.

    Nota No Access 2007, abra a base de dados de exemplo Northwind2007, feche a base de dados de exemplo Northwind2007 e reabra a base de dados de exemplo Northwind2007.

  2. No menu Ver, aponte para Objetos de Base de Dados e, em seguida, clique em Módulos.

    Nota No Access 2007, clique em Visual Basic no grupo Macro no separador Ferramentas de Base de Dados .

  3. Clique em Novo.

    Nota No Access 2007, clique em Módulo no menu Inserir no visual basic Revisor.

  4. Escreva ou cole o seguinte código:

    Nota O código de exemplo neste artigo utiliza Objetos de Dados Microsoft ActiveX. Para que este código seja executado corretamente, tem de referenciar a Biblioteca de Objetos de Dados do Microsoft ActiveX 2.1 ou posterior. Para tal, clique em Referências no menu Ferramentas no Visual Basic Revisor e certifique-se de que a caixa de verificação Biblioteca de Objetos de Dados Microsoft ActiveX 2.1 está selecionada.

    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. Guarde o módulo como ShowUsers.

  6. Prima Ctrl+G para abrir a Janela Imediata.

  7. Escreva a seguinte linha na janela Imediato e, em seguida, prima ENTER:

    ShowUserRosterMultipleUsers
    
    

    Tenha em atenção que a janela Imediato devolve uma lista de utilizadores com sessão iniciada na base de dados.