VB - Exibindo dados de tabelas selecionadas em um DBGrid


Neste artigo veremos como podemos usar o DBGrid em conjunto com um DataControl para exibir dados de tabelas selecionadas em um ListBox. Na verdade estou fazendo uma revisão visto que todos estes componentes já foram abordados em artigos anteriores. É portanto um artigo para quem esta começando agora a aprender VB.

Neste artigo você vai aprender:

Abra o seu Visual Basic 6.0 e crie um novo projeto do tipo Standard EXE. A seguir inclua os componentes conforme o layout da figura abaixo:

Você deve configurar a propriedade DataSource do DBGrid para apontar para o Data Control usado no projeto.(DataSource=Data1)

Quando o projeto for carregado o formulário principal - frmdbDBGrid - ir ser carregado. Coloque no evento Load deste formulário o código abaixo:

Private Sub Form_Load()
    'define o titulo do diálogo
    cmdlg1.DialogTitle = "Procurar Arquivos .mdb"
    'define o caminho inicial
    cmdlg1.InitDir = App.Path
    'define o filtro para exibir os arquivos
    cmdlg1.Filter = "Arqs. MDB(*.mdb)|*.mdb|Todos " & "Arqs. (*.*)|*.*"
    cmdlg1.FilterIndex = 1
    'define algumas variaveis de forma que o usuário possas selecionar somente arquivos que existam , exibe
    'nome de arquivos longos e usa a interface estilo do Explorer
    cmdlg1.Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly + cdlOFNLongNames + cdlOFNExplorer
    'dispara um erro se não for selecionado algo
    cmdlg1.CancelError = True
End Sub

Este código apenas configura o componente CommonDialog - cmdlg1 - que usamos no projeto.

Após o projeto ser carregado o usuário deverá clicar no botão para procurar um arquivo .mdb para que as tabelas seja exibidas no listbox. O código deve ser colocado no evento Click do botão de comando - cmdProcuraArquivo.

Private Sub cmdProcuraArquivo_Click()
   
   On Error Resume Next
    
    'exibe a caixa de diálogo Abrir Arquivo
    cmdlg1.ShowOpen
    
    If Err.Number = cdlCancel Then
        ' cancelado pelo usuario.
        Exit Sub
    ElseIf Err.Number <> 0 Then
        ' erro desconhecido
        MsgBox "Erro " & Format$(Err.Number) & " ao selecionar o arquivo." & vbCrLf & Err.Description
        Exit Sub
    End If
    
    On Error GoTo 0
   'atribui o nome do arquivo selecionado a caixa de texto
    txtArquivo.Text = cmdlg1.FileName
End Sub

Após selecionar um arquivo , o usuário deverá clicar no botão - Exibir Tabelas - o código do evento Click deste botão é o seguinte :

Private Sub cmdExibeTabelas_Click()
'define objetos
Dim nomeBancoDados As String
Dim db As Database
Dim qdef As QueryDef
Dim td As TableDef

On Error GoTo trataerro
    
   'limpa o listbox
    lstTabelas.Clear
    If txtArquivo.Text <> "" Then
    
       ' abre o banco de dados
       nomeBancoDados = txtArquivo.Text
    
       Set db = OpenDatabase(nomeBancoDados)

       ' lista o nome das tabelas
       For Each td In db.TableDefs
         ' Não permite as tabelas do sistema
          If Left(td.Name, 4) <> "MSys" Then lstTabelas.AddItem td.Name
       Next td

       db.Close
       ' vincula o data control ao banco de dados
       Data1.DatabaseName = nomeBancoDados
    End If
    Exit Sub
trataerro:
    MsgBox "Erro " & Err.Number & vbCrLf & Err.Description
End Sub

 

Finalmente , quando os nomes das tabelas estiverem sendo exibidos no ListBox o usuário irá selecionar uma delas para exibir os seus dados no DBGrid. O código abaixo deverá ser colocado no evento Click do ListBox de forma que ao clicar em um nome de tabela seus dados serão exibidos.

'abre a tabela selecionada
Private Sub lstTabelas_Click()
Dim nome_tabela As String
Dim sql As String
    
    'obtem o nome da tabela selecionada na lista
    nome_tabela = lstTabelas.List(lstTabelas.ListIndex)
    
    'monta instrução sql para selecionar todos os registros da tabela
    sql = "SELECT * FROM " & nome_tabela

    'define a fonte de dados como sendo a tabela
    Data1.Caption = nome_tabela
    Data1.RecordSource = sql
    Data1.Refresh
    
    ' torna o controle data e o dbgrid visiveis
    Data1.Visible = True
    DBGrid1.Visible = True
End Sub

 

Abaixo temos uma prévia do resultado da execução do projeto:

Simples e objetivo. Pegue o código completo aqui : dbDBGrid.zip

Eu sei é apenas VB , mas eu gosto...


José Carlos Macoratti