 VB - 
      FlashBack :  MsFlexGrid preenchendo o controle com dados II
VB - 
      FlashBack :  MsFlexGrid preenchendo o controle com dados II
Continuando o flashback sobre o MSflexGrid vamos melhorar o projeto do artigo - VB - FlashBack : MsFlexGrid preenchendo o controle com dados- e criar um visualizador genérico de tabelas só que vamos variar um pouco fazendo o acesso aos dados usando DAO.
Para saber mais sobre DAO leia os seguintes artigos do site:
Se você esta chegando agora e pretende aprender Visual Basic para acessar dados , o MsFlexGrid é um controle com muitos recursos que você pode usar para obter resultados satisfatórios. Então leia os artigos do site já publicados a respeito:
Preenchendo um MSFlexGrid com dados de uma tabela selecinada
Abre o seu Visual Studio o u Visual Basic e crie um novo projeto do tipo Standard EXE
Antes de iniciar é preciso incluir os controles CommonDialog e MSflexGrid na ToolBox. Faça isto no menu Project|Components e selecione em seguida os controles indicados.

No formulário padrão inclua os controles : TextBox ,Label, CommandButton, CommondDialog e MSFlexGrid

Na seção General Declarations do formulário defina as variáveis que serão visíveis em todo o formulário:
Option Explicit
    'define as variaveis 
    objeto para banco de dados e recordset
    Dim db As Database
    Dim rs As Recordset
    Dim arquivoDB As String
    Dim senhaDB As String
O evento Load do formulário irá chamar a janela de diálogo para selecionar o banco de dados:
| Private 
        Sub Form_Load() Call mostra_db End Sub | 
No evento Click do botão que irá abrir a janela de diálogo - Selecione o Banco de Dados - irá limpar as caixas de listagem e também chamar a rotina que exibe a janela para selecionar o banco de dados:
| Private 
        Sub Command2_Click() List1.Clear List2.Clear Call mostra_db End Sub | 
O código da rotina mostraDB que mostra a janela de diálogo para selecionar o banco de dados é o seguinte :
| Sub mostra_db() 'filtra os arquivos com extensão .mdb CDialog.Filter = "MDB Arquivos (*.mdb)|*.mdb" 'define o titulo da janela CDialog.DialogTitle = "Arquivo Mdb selecionado" 'abre a janela CDialog.ShowOpen arquivoDB = CDialog.FileName lblnomedb.Caption = arquivoDB senhaDB = InputBox("Informe a senha do Banco de dados se ele estiver protegido com senha", "Banco de dados")
End Sub | 
No evento Click do botão - Exibir Tabelas - que irá exibir as tabelas no ListBox.
| Private Sub Command1_Click() Dim i As Integer On Error GoTo trata_Erro 'limpa o conteudo do controle listbox List1.Clear 'se foi informado o nome do arquivo então abre o arquivo e preenche o listbox com as tabelas If arquivoDB <> "" Then If senhaDB <> "" Then Set db = OpenDatabase(arquivoDB, False, False, "MS Access;pwd=" & senhaDB) Else Set db = OpenDatabase(arquivoDB, False, False) End If 'prenche o listbox com todas as tabelas do banco de dados For i = 0 To db.TableDefs.Count - 1 List1.AddItem db.TableDefs(i).Name Next End If Exit Sub trata_Erro: 'se houver senha deve ser informada If Err.Number = 3031 Then         senhaDB = InputBox("Informe a senha : ")Else MsgBox Err.Number & " : " & Err.Description End If End Sub | 
Quando o usuário clicar no controle ListBox para selecionar uma tabela a mesma deverá ter sua estrutura exibida no segundo ListBox e os seus dados no controle MsFlexGrid. O código que faz isto é o seguinte :
| Private Sub List1_Click() Dim i As Integer Dim sno As Integer 'MousePointer = vbHourglass 'limpa o listbox List2.Clear 'inclui o cabeçalho no listbox List2.AddItem "Nome" & vbTab & vbTab & "Tipo" & vbTab & "Tamanho" For i = 0 To db.TableDefs(List1.ListIndex).Fields.Count - 1     List2.AddItem db.TableDefs(List1.ListIndex).Fields(i).Name & vbTab & _ 
            db.TableDefs(List1.ListIndex).Fields(i).Type & vbTab & db.TableDefs(List1.ListIndex).Fields(i).SizeNext 'Exibindo os dados da tabela selecionada 'limpa o controle msflexgrid MSFlexGrid1.Clear 'tratamento de erro On Error Resume Next Set rs = db.OpenRecordset("select count(*) from [" & List1.List(List1.ListIndex) & "]")If Err.Number <> 0 Then MsgBox "O recordset não pode ser aberto devido ao erro: " & Err.Description MousePointer = vbDefault Exit Sub End If If rs(0) > 0 Then MSFlexGrid1.Rows = rs(0) + 1 Else MSFlexGrid1.Rows = 2 End If 'abre um recordset para a tabela selecionada Set rs = db.OpenRecordset("select * from [" & List1.List(List1.ListIndex) & "]")MSFlexGrid1.Cols = rs.Fields.Count + 1 sno = 1 MSFlexGrid1.Row = 0 MSFlexGrid1.Col = 0 MSFlexGrid1.Text = "Sno" For i = 0 To rs.Fields.Count - 1 MSFlexGrid1.Col = i + 1 MSFlexGrid1.Text = rs.Fields(i).Name Next If rs.EOF = False Then 'Atribuindo o nome das colunas para o flexgrid
    While Not rs.EOFMSFlexGrid1.Row = sno MSFlexGrid1.Col = 0 MSFlexGrid1.Text = sno For i = 0 To rs.Fields.Count - 1 MSFlexGrid1.Col = i + 1 MSFlexGrid1.Text = IIf(IsNull(rs(i)), "", rs(i)) Next sno = sno + 1 DoEvents rs.MoveNext Wend End If MousePointer = vbDefault End Sub | 
O resultado será exibido conforme a janela abaixo:

Pegue o projeto completo aqui :
     flexEstrutura.zip
 flexEstrutura.zip
Eu sei é apenas VB.NET , e daí , eu gosto 
    .... 
José Carlos Macoratti