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