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