Data Report - Criando relatórios dinâmicos
A algum tempo atrás abordamos como usar o Data Report para criar relatórios ;se quiser relembrar leia o artigo : Usando Data Report . Vamos avançar um pouco mais e mostrar como gerar relatórios dinâmicos com o Data Report.
Vamos criar um relatório usando o Data Report que será preenchido em tempo de execução que não estará vinculado a um Data Environment . Toda a configuração será feita em tempo de execução : o nome das colunas e os dados para os campos nome e sobrenome.
Vamos gerar um relatório com o nome e sobrenome dos funcionários da tabela - funcionarios - do banco de dados Nwind.mdb. A tabela funcionarios tem os seguintes dados :

| 1- Inicie um novo projeto no VB e no formulário padrão - form1 - escolha a opção Project do menu e selecione - "Add Data Report". (se esta opção não estiver presente selecione no menu Project a opção - Components - e clique na aba Designers incluindo a seguir uma referência ao Data Report.veja figura ao lado) | ![]() |
2- No Data Report insira dois controles RptLabel e dois controles RptTextBox na seção Detail do relatório e um controle RptLabel na Seção Page Header conforme figura abaixo:

3- No formulário padrão insira um botão de comando - command1 . Inclua em seguida o código conforme abaixo no formulário :
a- Seção General Declarations - Declaração das variáveis objetos usadas no sistema
Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim cmd As New ADODB.Command |
b- Evento Click do botão de comando - command1 :
Private Sub Command1_Click()
Dim q As Integer
Dim i As Integer
Dim x As Integer
Dim z As Integer
x = 0: q = 0: z = 0
With DataReport1
.Hide
Set .DataSource = rs
.DataMember = ""
With .Sections("Section1").Controls
For i = 1 To .Count
If TypeOf .Item(i) Is RptLabel Then
.Item(i).Caption = rs.Fields(q).Name & " :"
q = q + 1
End If
If TypeOf .Item(i) Is RptTextBox Then
.Item(i).DataMember = ""
.Item(i).DataField = rs(z).Name
z = z + 1
End If
Next i
End With
.Refresh
.Show
End With
End Sub
|
Aqui fazemos o seguinte:
|
c- evento Load do formulário - form1 :
Private Sub Form_Load() cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=c:\teste\Nwind_2.mdb" With cmd .ActiveConnection = cn .CommandType = adCmdText .CommandText = "Select Nome ,Sobrenome from Funcionários" .Execute End With With rs .ActiveConnection = cn .CursorLocation = adUseClient .Open cmd End With End Sub |
1-Abrimos
a conexão com o banco de dados 2-Criamos um objeto command na conexao 3-Atribuimos a instrução SQL ao command 4-Executamos o command 5-Definimos a conexao ativa para o recordset 6- abrimos o command do recordset |
Já podemos executar o projeto e gerar o relatório. Pressione F5 e clique no botão - Exibir Relatório . O relatório exibido será:
![]() |
Simples e funcional , não é
mesmo ? Até o próximo artigo ...... ![]()
Referência : HOW TO : Dynamically Populate a Data Report in Visual Basic ( Q240019)
José Carlos Macoratti