Descobrindo os usuários conectados ao seu banco de dados


Precisando saber quem esta conectado ao seu banco de dados ??? Vamos usar a ADO para pode exibir quem esta conectado ao seu banco de dados Access.

1- Inicie um novo projeto no VB e no formulário padrão insira os controles conforme o layout abaixo:

- No evento Click do botão de comando - Localiza Banco de dados - insira o codigo abaixo:

Private Sub cmdLocalizaBD_Click()

'define os parâmetros iniciais do commmondialog
With CommonDialog1
   .DialogTitle = "**Selecione o Banco de dados**"
   .Filter = "Access Databases|*.mdb"
   .InitDir = "c:\"
   .ShowOpen
End With

If CommonDialog1.FileName <> "" Then
    'retorna o nome do arquivo selecionado
    Text1.Text = CommonDialog1.FileName
    CommonDialog1.FileName = ""
    'limpa a grade
    MSHFlexGrid1.Clear
    'chama a rotina para retorna os usuarios logados
    RetornaUsuariosLogados
    'ajusta as colunas do grid
    AjustaColunas MSHFlexGrid1
    'atualiza o grid
    MSHFlexGrid1.Refresh

    'exibe os usuarios conectados
    Text2.Text = MSHFlexGrid1.Rows - 1
Else
     'limpa o grid
     MSHFlexGrid1.Clear
     Text1.Text = "Você precisa selecionar um banco de dados"
     'limpa a caixa de texto
     Text2.Text = 0
End If

End Sub

- Insira um módulo no seu projeto - Menu Project | Add Module ; vamos precisar dele para criar a rotina - RetornaUsuariosLogados:

- Agora vamos mostrar o código da rotina - RetornaUsuariosLogados - ela usa o método OpenSchema para retornar as informações sobre a base de dados de um provedor. Sua sintaxe é :

Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID)

Onde :

Sub RetornaUsuariosLogados()
Dim con As New ADODB.Connection
Dim rs As ADODB.Recordset

On Error GoTo Trata_Erro

' String de conexao para acessar o banco de dados
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
         "Data Source=" & frmMain.Text1.Text & ";"

' Para abrir um esquema(Estrutura) do recordset vamos usar o método OPenSchema
Set rs = con.OpenSchema(Schema:=adSchemaProviderSpecific, _
         SchemaID:="{947bb102-5d43-11d1-bdbf-00c04fb92675}")

' Atribuindo o recordset ao ADo DataControl
Set frmMain.Adodc1.Recordset = rs

' Fecha a conexao e o recordset
Set rs = Nothing
Set con = Nothing

On Error GoTo 0

RetornaUsuariosLogados_Exit:
Exit Sub

Trata_Erro:
MsgBox "Erro No: " & Err.Number & vbCrLf & "Descrição: " & Err.Description,-
       vbExclamation, "Erro em [RetornaUsuariosLogados]"
End Sub

- O próximo código refere-se à rotina - - que ajustas o tamanho das células do controle Microsoft Hierarchical FlexGrid Control 6.0 :

Private Sub AjustaColunas(ByVal flx As MSHFlexGrid)
Dim max_wid As Single
Dim wid As Single
Dim max_row As Integer
Dim r As Integer
Dim c As Integer

'ajusta as colunas do grid para o tamanho do texto contido nas celulas
max_row = flx.Rows - 1
For c = 0 To flx.Cols - 1
   max_wid = 0
   For r = 0 To max_row
     wid = TextWidth(flx.TextMatrix(r, c))
     If max_wid < wid Then max_wid = wid
   Next r
   flx.ColWidth(c) = max_wid + 240
Next c
End Sub

Agora resta rodar o projeto e observar a tela de resultado como abaixo exibindo o nome do computador o nome do usuario logado e se ele esta conectado.

Feliz 2003 a todos e até a próxima dica VB ...


José Carlos Macoratti