Se utilizar o Microsoft Visual Basic for Applications no Microsoft Access 2000, poderá obter uma lista de utilizadores que têm sessão iniciada numa base de dados. O exemplo do código neste artigo mostra como fazer isto.
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, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. A função de lista de utilizadores fornece um modo de determinar quem está actualmente ligado a uma base de dados do Microsoft Jet. A lista pode ser obtida através da interface de programação ADO e devolve as seguintes informações para cada utilizador:
- Nome do computador que o utilizador está a usar.
- Nome de segurança, isto é, o ID do utilizador.
- Se o utilizador está ou não actualmente ligado à base de dados. (Um ID do utilizador permanece na base de dados de bloqueio até o último utilizador desligar ou até ser efectuada uma reserva para uma nova ligação de utilizador.)
- Se a ligação do utilizador foi terminada normalmente ou não.
- A capacidade de lista de utilizadores pode ser utilizada em conjunto com a capacidade do controlo de ligações para determinar os utilizadores que ainda estão ligados para que lhes possa ser pedido que desliguem.
A capacidade de lista de utilizadores também é útil para isolar problemas de danos da base de dados associados às actividades de um utilizador específico.
Exemplo de código
Para demonstrar o exemplo do código, siga estes passos:
NOTA: o exemplo de código neste artigo utiliza Microsoft ActiveX Data Objects. Para que este código seja executado correctamente, deve referenciar a biblioteca Microsoft ActiveX Data Objects 2.x Library (em que 2.x é 2.1 ou posterior). Para o fazer, clique em
References no menu
Tools do editor do Visual Basic e certifique-se de que a caixa de verificação de
Microsoft ActiveX Data Objects 2.x Library está seleccionada.
- Copie a base de dados de exemplo Adamastor para a pasta C:\.
- No Microsoft Access, abra C:\Adamastor.
- Na janela da base de dados, clique em Módulos, em Objectos, e clique em Novo.
- Guarde o módulo como Mostrar utilizadores.
- Escreva o código que se segue no módulo Mostar utilizadores:
Sub ShowUserRosterMultipleUsers()
Dim cn As New ADODB.Connection
Dim cn2 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i, j As Long
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.Open "Data Source=c:\Adamastor.mdb"
cn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=c:\Adamastor.mdb"
' A lista de utilizadores é exposta como um conjunto de linhas de
' esquema específico de fornecedor no fornecedor de BD OLE Jet 4.
' Tem de utilizar um GUID para referenciar o esquema, uma vez que
' os esquemas específicos de fornecedor não se encontram listados na
' biblioteca de tipos de ADO para conjuntos de linhas de esquema
Set rs = cn.OpenSchema(adSchemaProviderSpecific, _
, "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
'Apresentar a lista de todos os utilizadores na base de dados actual.
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
- Feche a base de dados Adamastor e, quando tal for pedido, guarde as alterações a ShowUserRosterMultipleUsers (isto deve ser feito para libertar um bloqueio exclusivo na base de dados devido ao código que acabou de adicionar).
- Abra novamente C:\Adamastor.
- Prima CTRL+G para abrir a janela Immediate no editor do Visual Basic.
- Escreva o seguinte na janela Immediate e prima ENTER:
ShowUserRosterMultipleUsers
Repare que, na janela Immediate, é devolvida uma lista de utilizadores na base de dados.