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:
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 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 , 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