O Active Reports é uma ferramenta da DataDynamics (www.datadynamics.com), totalmente integrada ao VS.net trazendo uma facilidade muito grande na criação de relatórios tanto em aplicações Windows (winforms) e para aplicações Web. Estarei mostrando os dois tipos de aplicação divididos em duas partes. Parte 1 - Windows e parte 2 - Web.
Cenário
Teremos um arquivo XML simples de clientes chamado alunos.xml. Este arquivo xml será meu repositório de dados, ou seja, a fonte de dados que meu relatório buscará para exibir as informações formatadas. O arquivo terá a seguinte estrutura:
<?xml version="1.0" encoding="iso-8859-1" ?>
<tblAluno>
<aluno>
<matricula>00001</matricula>
<nome>João Paulo da Silva</nome>
<endereco>Rua Bela Moema, 123</endereco>
<bairro>Centro</bairro>
<cidade>SP</cidade>
<estado>SP</estado>
<telefone>4359-4857</telefone>
</aluno>
<aluno>
<matricula>00002</matricula>
<nome>Ernesto Lopes</nome>
<endereco>Rua das tulipas, 45</endereco>
<bairro>Tatuapé</bairro>
<cidade>SP</cidade>
<estado>SP</estado>
<telefone>3148-2547</telefone>
</aluno>
<aluno>
<matricula>00003</matricula>
<nome>Paulo Manga</nome>
<endereco>Rua do Pão, 49</endereco>
<bairro>Consolação</bairro>
<cidade>SP</cidade>
<estado>SP</estado>
<telefone>3523-4878</telefone>
</aluno>
</tblAluno>
Criando Relatório com Active Reports - Winforms
Será um relatório que listará todos os alunos do arquivo XML alunos.aspx. Através de um DataSet que vai ler o arquivo alunos.xml, vamos listar todas as informações formatadas.
Inicie um projeto do tipo Visual Basic e selecione o template Windows Application com o nome ActiveReports.
O primeiro passo é a construção do relatório no Active Reports. Clique com o botão direito do mouse no projeto dentro do solution Explorer, Add, Add New Item. Selecione o template ActiveReportsFile.
É criado um formulário com o formato de um relatório. Os controles que compõe o relatório ficam na Toolbox, no grupo ActiveReports. A utilização dos controles é semelhante à de um formulário normal.
O relatório fica dividido em 3 partes: PageHeader (Topo), Detail (Itens) e PageFooter (Rodapé).
No PageHeader vamos adicionar o título do relatório e as descrições dos itens listados no relatório, conforme abaixo:
No Detail teremos que adicionar os TextBox dos campos de detalhe vinculados ao campo que ele se refere no banco de dados. Para fazer isto, basta vincular a propriedade DataField do textbox de acordo com o nome do atributo no arquivo alunos.xml.
TextBox |
DataField |
txtMatricula |
Matricula |
txtNome |
Nome |
txtEndereco |
Endereço |
txtBairro |
Bairro |
txtCidade |
Cidade |
txtUf |
Uf |
txtTelefone |
Telefone |
Monte os details conforme abaixo:
No PageFooter vamos adicionar o número de páginas do relatório. Basta adicionar um TextBox chamado txtPagina e altera as propriedades SummaryRunning = All e SummaryTupe = PageCount.
Nosso relatório já está pronto, o próximo passo agora será a chamada do relatório. Para realizar a chamada, vamos criar um formulário chamado frmRelatorio.
No frmRelatorio temos que adicionar o Controle de Visualização do Active Reports. Basta adicionar na ToolBox (Add/Remove Itens) o componente Viewer, conforme mostra a imagem abaixo.
Na ToolBox, será adicionado o controle na última posição:
Adicione ao formulário o Viewer e altere as seguntes propriedades:
Propriedade |
Valor |
Dock |
Button |
Name |
vieRelatorio |
Altere algumas propriedades do frmRelatorio:
Propriedade |
Valor |
WindowsState |
Maximized |
Text |
Relatório |
Adicione um Button chamado btnRelatorio com a propriedade Text = "Chama Relatório", a chamada do relatório será feita neste botão da seguinte maneira:
Private Sub btnAbre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btnAbre.Click
Dim rpt As Object
Dim Relatorio As New frmRelatorio
'Seleciona o arquivo cliente.xml
ofdCaminho.ShowDialog()
Dim strCaminho As String = ofdCaminho.FileName
If strCaminho = "" Then
MsgBox("Selecione um Caminho")
Exit Sub
End If
'Cria o DataSet e abre o XML
Dim ds As New DataSet
ds.ReadXml(strCaminho)
rpt = New rptCliente
'Chama a função que gera o relatório
Relatorio.GeraRelatorioDS(rpt, ds)
Relatorio.ShowDialog()
End Sub
Temos que criar a função GeraRelatorioDS:
Public Sub GeraRelatorioDS(ByVal RPT As Object, ByVal DS As DataSet)
Try
Me.vieRelatorio.Document = RPT.document
RPT.DataSource = DS.Tables(0)
RPT.Run(True)
Catch erro As Exception
MsgBox(erro.Message, MsgBoxStyle.Critical + MsgBoxStyle.OKOnly, "Erro")
End Try
End Sub
Pronto, execute a aplicação e clique no botão Abrir Relatório e o relatório de clientes será exibido abaixo:
Conclusão: A Active reports traz diversas outras funcionalidades que não foram mostradas, em comparação com o Crystal Reports traz algumas funcionalidades a mais... maiores informações sobre o produto entre no site www.datadynamics.com que diversos exemplos podem ser baixado.
O exemplo mostrado foi um exemplo bem simples onde carregamos o relatório a partir de um DataSet, porém pode ser carregado através de um DataReader também. Estarei mostrando na Parte 2 deste artigo como chamar este mesmo relatório na Web. Qualquer dúvida me envie um e-mail.
Agradeço ao David Pomarico pela ajuda na elaboração deste artigo.
Se você tem interesse em aprender .net ou discutir .net entre no grupo de usuários Codificando.net - São Paulo.
Se tiver alguma dúvida, crítica, sugestão de artigo, fale comigo: atarifa@deloitte.com
Abraços
Alexandre Tarifa
ONDE COMPRAR:
Comptools: http://www.comptools.com.br/produto.asp?codproduto=CF-00079