VB - FlashBack :  MsFlexGrid preenchendo o controle com dados


Dizem que recordar é viver. Vamos lembrar então como podemos tratar o controle MsFlexGrid como um container para exibir dados de tabelas Access. O acesso aos dados será feito usando ADO - Activex Data Object.

Para saber mais sobre ADO leia os artigos do site:

Migração ADO/DAO
Migração ADO/DAO - Abrindo uma Base de Dados
Migração ADO/DAO - Retornando e Alterando dados - Trabalhando com Recordsets
Migração ADO/DAO - Trabalhanco com Consultas e Consultas Parametrizadas
ADO - Usando Transações.
Utilizando os objetos de Controle Vinculados da ADO
VB - ADO Total - Uma livraria de funções para acesso a dados

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 via ADO

È Simples, muito simples fazer isto com VB e o controle MSFlexGrid.

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 CommonDialogMSflexGrid 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 , 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
Option Compare Text

Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sConnString As String
Dim nomeDB As String

No evento Click do botão que irá abrir a janela de diálogo - Abrir Arquivo - insira o seguinte código :

Private Sub Command1_Click()
'filtra os arquivos com extensão .mdb
cmdlg.Filter = "MDB Arquivos (*.mdb)|*.mdb"
'define o titulo da janela
cmdlg.DialogTitle = "Arquivo Mdb selecionado"
'abre a janela
cmdlg.ShowOpen
Text1.Text = cmdlg.FileName
End Sub

O evento Click do botão de comando - Preencher FlexGrid - teremos o código que abre uma conexão ADO e seleciona os dados da tabela Orders e a seguir chama a rotina preencheFlexGrid passando o nome do controle o recordset.

Private Sub Command2_Click()

On Error GoTo trataerro

sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Text1.Text

conn.Open sConnString

rs.Open " SELECT * FROM Orders", conn, adOpenKeyset, adLockOptimistic

preencheFlexGrid MSFlexGrid1, rs

rs.Close
conn.Close
Exit Sub

trataerro:
MsgBox Err.Number & vbCrLf & Err.Description
End Sub

 

O código da rotina preencheFlexGrid é o seguinte :

Public Function preencheFlexGrid(FlexGrid As Object, rs As Object) As Boolean
           
On Error GoTo Macoratti

'verifica os tipos dos objetos
If Not TypeOf FlexGrid Is MSFlexGrid Then Exit Function
If Not TypeOf rs Is ADODB.Recordset Then Exit Function

Dim i As Integer
Dim J As Integer
   
   'define linha e coluna do msflexgrid
   FlexGrid.FixedRows = 1
   FlexGrid.FixedCols = 0
    
   'se o recordset tiver dados então...
   If Not rs.EOF Then
    
       FlexGrid.Rows = rs.RecordCount + 1
       FlexGrid.Cols = rs.Fields.Count
    
       'preenche o msflexgrid com cabeçalho
       For i = 0 To rs.Fields.Count - 1
           FlexGrid.TextMatrix(0, i) = rs.Fields(i).Name
          Next
    
       i = 1
        'e depois com os dados
       Do While Not rs.EOF
    
           For J = 0 To rs.Fields.Count - 1
               If Not IsNull(rs.Fields(J).Value) Then
                   FlexGrid.TextMatrix(i, J) = rs.Fields(J).Value
               End If
           Next
    
       i = i + 1
       rs.MoveNext
       Loop
    
    
   End If
preencheFlexGrid = True

Macoratti:
   preencheFlexGrid = False
   Exit Function
End Function

 

O resultado será exibido conforme a janela abaixo:

Pegue o projeto completo aqui : flexPreenche.zip

Veja o artigo - VB - FlashBack :  MsFlexGrid preenchendo o controle com dados II - que mostra um projeto usando DAO.

Eu sei é apenas VB.NET , e daí , eu gosto ....


José Carlos Macoratti