Este artigo mostra como utilizar o Microsoft Visual Basic for Applications para gerar uma lista dos utilizadores que têm sessão iniciada numa base de dados.
A Microsoft fornece exemplos de programação apenas a título informativo, sem garantia expressa ou implícita, incluindo, sem limitação, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador conhece a linguagem de programação apresentada e as ferramentas utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.
Quando utiliza o seguinte código de exemplo, são devolvidas as seguintes informações:
- Nome do computador.
- Nome de início de sessão.
- Se o utilizador está ou não actualmente ligado à base de dados. (Um ID de utilizador permanece na base de dados de bloqueio até que o último utilizador se desligue ou até que a ranhura seja reclamada 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 de danos na base de dados associados às actividades de um utilizador específico.
Procedimento
ATENÇÃO: Se seguir estes passos neste exemplo, irá modificar a base de dados de exemplo Adamastor.mdb. Convém fazer uma cópia de segurança do ficheiro Adamastor.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:
- Abra a base de dados de exemplo Adamastor.mdb.
Nota No Access 2007, abra a base de dados de exemplo Adamastor 2007, feche a base de dados de exemplo Adamastor 2007 e reabra a base de dados de exemplo Adamastor 2007. - No menu Ver, aponte para Objectos 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 da Base de Dados. - Clique em Novo.
Nota No Access 2007, clique em Módulo no menu Inserir no Editor do Visual Basic. - Escreva ou cole o seguinte código:
Nota O código de exemplo constante deste artigo utiliza Microsoft ActiveX Data Access Objects. Para que este código seja executado correctamente, deve referenciar a Biblioteca Microsoft ActiveX Data Objects 2.1 ou uma versão posterior. Para o fazer, clique em References no menu Tools do Editor do Visual Basic e certificar-se de que a caixa de verificação Microsoft ActiveX Data Objects 2.1 Library está seleccionada.
Sub ShowUserRosterMultipleUsers()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i, j As Long
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
- Guarde o módulo como ShowUsers.
- Prima CTRL+G para abrir a janela Immediate.
- Escreva a seguinte linha na janela Immediate e prima ENTER:
ShowUserRosterMultipleUsers
Repare que a janela Immediate devolve uma lista de utilizadores com sessão iniciada na base de dados.