 Preenchendo
um MSFlexGrid com ADO
             Preenchendo
um MSFlexGrid com ADO
Lá vou eu novamente falar sobre grades. O objetivo é mostrar como preencher o controle MSFlexGrid com os dados de uma tabela de um banco de dados. Nosso exemplo permitirá escolher entre algumas tabelas do banco de dados biblio.mdb .
Iremos fazer a conexão via ADO e preencher o grid usando a propriedade TextMatrix do MSFlexGrid.
 ]
]
Inclua o seguinte código no evento Load do formulário.
| Private Sub Form_Load() Combo1.AddItem "Authors" Combo1.AddItem "Publishers" Combo1.AddItem "Titles" Combo1.ListIndex = 0 End Sub | 
No formulário padrão insira o código da função que irá preencher o grid . A funçao irá retornar False ou True.
| Public Function PreencheFlexGrid(FlexGrid As
      Object,
   rs As Object) As Boolean On Error GoTo ErrorHandler 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 FlexGrid.FixedRows = 1 FlexGrid.FixedCols = 0 If Not rs.EOF Then FlexGrid.Rows = rs.RecordCount + 1 FlexGrid.Cols = rs.Fields.Count For i = 0 To rs.Fields.Count - 1 FlexGrid.TextMatrix(0, i) = rs.Fields(i).Name ' define o cabeçalho do grid Next i = 1 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 ErrorHandler: Exit Function End Function | 
No evento Click do botão de comando ( command1 ) insira o seguinte código:
| Private Sub Command1_Click() Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim sConnString As String If Combo1.ListIndex <> -1 Then sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\teste\biblio.mdb" conn.Open sConnString rs.Open " SELECT * FROM " & Combo1.Text, conn, adOpenKeyset, adLockOptimistic PreencheFlexGrid MSFlexGrid1, rs rs.Close conn.Close Else MsgBox "Selecione uma tabela", vbCritical, " Msflexgrid e ADO" End If End Sub | 
Execute o projeto , selecione uma tabela e clique no botão de comando. O resultado pode ser visto abaixo para a tabela Authors.

Explicando o código:
1-) Definimos o número de linhas ( Rows) e o número de colunas(Cols) do grid
        FlexGrid.Rows = rs.RecordCount + 1
        FlexGrid.Cols = rs.Fields.Count
2-) A seguir escrevemos os nomes dos campos( Rs.Fields(i).Name ) da tabela no grid.
        For i = 0 To rs.Fields.Count - 1
     FlexGrid.TextMatrix(0, i) = rs.Fields(i).Name    
           Next
3-) Percorremos todo o recordset (rs) até o
final ( 
        Do While Not rs.EOF ) e
escrevemos no grid o valor ( rs.Fields(J).Value)
de cada campo da tabela
        i = 1
        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
Obs: A conexão é feita via ADO, onde usamos:
  sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\teste\biblio.mdb"
  conn.Open sConnString
 
  rs.Open " SELECT * FROM " & Combo1.Text, conn, adOpenKeyset, adLockOptimistic
Até breve...  