Escolar Documentos
Profissional Documentos
Cultura Documentos
Fast Report Tutorial
Fast Report Tutorial
FastReport um gerador de relatrios presente no Delphi desde a sua verso 4. A partir da verso XE2, passou a ser a
ferramenta de relatrios oficial do Delphi. Com o FastReport podemos criar poderosos relatrios pra nossas aplicaes
Win32 e FireMonkey com Delphi.
A ferramenta ainda possui suporte (adquirido separadamente) para .NET, Mono e Lazarus. Possui ainda uma
ferramenta chamada FastCube para anlise de dados e construo de relatrios e grficos (OLAP), uma ferramenta de scripts
(FastScript) e o FastQueryBuilder, construtor visual de consultas SQL.
Para ver exemplos e outras informaes sobre essas ferramentas, acesse: www.fast-report.com/pt/. Nesse artigo, vamos
conhecer a verso do FastReport que acompanha o Delphi XE4, aprendendo a criar relatrios simples, agrupados, formataes
e muitos outros exemplos.
Conhecendo a ferramenta
Ao abrir o Delphi e criar um projeto VCL Foms, podemos visualizar a aba FastReport 4.0 (Figura 1).
Trabalharemos para criar relatrios simples, usando dois componentes: o frxReport e o frxDBDataSet. O primeiro o
editor de relatrios, onde basta dar um duplo clique que teremos o ambiente de criao dos relatrios (Figura 2). O segundo
faz a ponte, entre os dados e o relatrio.
Report designer: local onde vamos adicionar as bandas e os objetos para o relatrio;
Barra de menus;
Barra de ferramentas: botes com as opes de carregar relatrios, criar novos, salvar etc;
Barra de ferramentas do objeto: objetos que podem ser adicionados ao relatrio;
Report page tabs: abas para configurao da pgina do relatrio;
Report tree: janela onde podemos visualizar as bandas e objetos inseridos no relatrio;
Object Inspector: janela para definio das propriedades dos objetos do relatrio;
Data tree: janela com os objetos de dados do relatrio. Podemos arrastar facilmente um campo para o relatrio;
Rgua;
Status line: semelhante a uma barra de status, com informaes sobre o objeto selecionado no relatrio.
Primeiro exemplo
Volte ao Delphi e adicione um frxDBDataSet (um frxReport tambm deve estar no formulrio). Crie uma conexo com o
banco de dados de sua preferencia (usarei no artigo, o Firebird). Usarei no artigo um Data Module para conter os componentes
de conexo com o banco, pois usaremos vrios exemplos.
Vincule o frxDBDataSet com o DataSet que retorna os dados da sua consulta. D um duplo clique no frxReport para abrir
o editor. Primeiramente, vamos vincular o frxDBDataSet com o nosso relatrio, acessando o menu Report>Data. No editor que
abrir, escolha o respectivo controle de dados (Figura 3).
Vamos agora, adicionar as bandas do relatrio. Clique no boto Insert Band na barra de ferramentas de objetos.
Conforme vemos na Figura 4 mostrado um menu suspenso que todas as opes de banda.
Adicione os tipos: Page Header, Page Footer e Master Data. O Master Data, abre um editor, solicitando o respectivo
DataSet da aba. Selecione frxDBDataSet1. Existem duas maneiras de adicionar os campos na banda Master Data para exibir os
dados.
Arraste os campos da janela Data tree para o relatrio. Note que aps inserir os campos, ao passar o mouse,
mostrado uma seta, onde podemos clicar e ser exibido um menu com os campos do DataSet, assim fica fcil modificar o
objeto para outro campo da consulta (Figura 5).
Outra maneira de adicionar os campos no relatrio escolhendo um Text object na barra de ferramentas e adicionando
o mesmo no relatrio. Ser aberto um editor com alguns botes (Figura 6).
No editor, temos abas onde vamos configurar o formato do campo, formataes de fonte etc. o primeiro boto da
aba Text, acessa outro editor, onde podemos escolher os campos da consulta, variveis do relatrio, funes, etc (Figura 7).
Podemos usar o editor do Text Object para apenas adicionar rtulos (textos) no relatrio, onde basta digitar o texto
desejado na aba Text. Na barra de ferramentas temos as funcionalidades necessrias para formatar os textos digitados nesse
objeto.
Note que ao adicionarmos um Text Object ou mesmo adicionar um campo usando a janela Data tree, existem linhas que
nos auxiliam para que os controles fiquem alinhados tanto horizontalmente, como verticalmente (Figura 8).
Feche o relatrio. No Delphi, adicione um boto e adicione o seguinte cdigo em seu evento OnClick:
frxReport1.ShowReport();
Execute a aplicao e visualize o relatrio em funcionamento (Figura 9).
Formatao de objetos
Como podemos ver no relatrio que criamos, o campo Salary, esta como texto, sem a devida formatao. Para ajustar
isso, abra o relatrio e d um duplo clique no campo. No editor, acesse a aba Format e configure, conforme a Figura 10, onde
indicamos o tipo de formatao e o separador decimal (vrgula) do formato.
Nem precisamos executa o projeto novamente, basta acessar o boto de preview no prprio ambiente do relatrio
para visualizar as modificaes. E se precisssemos modificar a formatao de um objeto (fonte, cor etc) de acordo com algum
parmetro que existisse, como faramos? bastante simples.
Acesse o objeto que deseja modificar a formatao. D um duplo clique para acessar o editor e a aba Highlight. Na
opo Condition, digite: <frxDBDataset1."SALARY"> > 50000. Marque em Font a opo Bold. O boto Color, indica a cor do
texto quando a condio do objeto for verdadeira.
Voc tambm pode usar o boto para acessar o editor de expresses para montar a mesma manualmente. De acordo
com o configurado antes, o campo Salary do relatrio deve aparecer em vermelho quando o valor desde for maior que
50.000,00. Veja na Figura 11 nosso exemplo em execuo.
Caso voc deseje mudar a formatao de todo a linha, para que no precise fazer manualmente a configurao de
cada objeto, basta selecionar todos os objetos e acessar a propriedade HighLight>Condition e fazer a mesma configurao
anterior.
Outra formatao bastante usada a de indicar a quantidade de pginas e a pgina atual do relatrio. O FastReport
possui variveis que retornam essas informaes e que so fceis de serem utilizadas.
Acesse a aba Variables do Data tree e arraste para o formulrio um Date e um TotalPages. Para customizar esses variveis, basta
dar um duplo clique e digitar o texto que deseja. Veja na Figura 12 o rodap do relatrio (modifiquei o mesmo para mostrar
mais de uma pgina).
Nota: Para adicionar um texto, basta digit-lo no editor, tomando o cuidado de no remover a varivel.
Arquivos de relatrios
Para voc que estava acostumado com o Rave Reports, vai notar uma diferena interessante no FastReport. Cada
relatrio um arquivo FR3. No Rave, o arquivo RAV era de projeto e dentro poderamos ter vrios relatrios.
No FastReport, cada FR3, apenas um relatrio. Salve o arquivo e modifique o cdigo do boto para o seguinte
cdigo:
frxReport1.LoadFromFile('Listagem.fr3');
frxReport1.ShowReport();
registro.
Nota: caso o FastReport no encontre o arquivo, nenhum erro mostrado, apenas o relatrio no exibe nenhum
Usamos o mtodo LoadFromFile para carregar o arquivo de relatrio no frxReport. Isso nos d a facilidade de termos
apenas um controle e vrios relatrios, sendo carregados de acordo com a nossa necessidade.
apenas um controle e vrios relatrios, sendo carregados de acordo com a nossa necessidade.
Agrupamento
Outro exemplo muito usado em relatrios o de agrupamento de dados. Neste exemplo, vamos fazer a mesma
listagem anterior, com a diferena que vamos retornar todos os empregados, agrupados pelo seu departamento.
Veja o SQL da consulta:
Dica: caso voc escolha a opo drill-down ao executar o relatrio, apenas os grupos sero mostrados. necessrio
clicar em cima do mesmo para exibir os registros.
Arraste a banda para que fique acima da Master Data. Veja na Figura 13 o relatrio agrupado em execuo.
Somatrio
Sempre que usamos agrupamento de dados em um relatrio, precisamos somar um determinado campo ou contar a
quantidade de registros. Vamos aproveitar esse relatrio para fazer esse exemplo. Adicione uma banda GroupFooter no
relatrio.
Adicione um Text Object e acesse o boto Insert Aggregate da aba Text. No editor, vamos configurar um campo que ter
seu valor somado, que no caso Salary. Veja na Figura 14 como ficou a configurao.
Faa a formatao no campo, semelhante ao campo Salary. Rode o relatrio e note que temos o somatrio por grupo.
Mas e se quisermos o valor total no final do relatrio? Basta adicionar uma banda ReportSummary e fazer a mesma
configurao anterior.
Dica: temos uma opo bem interessante na configurao do somatrio. Caso precisssemos mostrar um somatrio
acumulado por grupos, basta marcar a opo Running total na janela Insert Agreggate (Figura 14). Assim, a cada final de grupo,
teramos um somatrio acumulado.
Master/detail
Outro exemplo muito comum em relatrio e de mostrar os dados master e os details. Exemplo clssico: nota fiscal, os
dados referente ao cliente (comprador) podemos considerar o master, e as informaes dos produtos da nota, so o detail.
Essas duas fontes de dados, precisam ter um relacionamento. Primeiro, teremos duas consultas separadas, uma para a
master e outra para detail. Nesse exemplo, estou pesquisando os empregados (Employee) e o histrico de salrios
(Salary_History). Precisaremos, portanto de dois frxDBDataSet (um para cada consulta).
O relacionamento, faremos nos componentes de consulta, o que bastante simples. Adicione um DataSource e faa a
ligao com a consulta master. No componente (ClientDataSet, Query, Table etc) com os dados da consulta detail, acesse a
propriedade MasterSource e escolha o DataSet anterior. Em MasterFields, acesse o editor e configure o campo de relacionamento
(nesse caso Emp_no).
Crie um novo relatrio e adicione as seguintes bandas: Page Header, Master Data, Detail Data e Page Footer. Na Master
Data voc deve configurar o frxDBDataSet que tem os dados do mster (no exemplo, Employee) e consequentemente, para o
Detail Data, os dados do detail (Salary_History).
Para exportar, por exemplo, um relatrio para HMTL, basta adicionar no formulrio um frxHTMLExport. Acesse a IDE de
desenvolvimento e execute o preview do relatrio. Note que um boto foi adicionado para exportar o relatrio.
Para cada tipo de exportao, um item de menu ser adicionado no preview do relatrio (Figura 18).
Na verso comercial do FastReport, diferente da verso que acompanha o Delphi, existe a opo de envio do relatrio
por e-mail. Ao clicar no componente, um editor ser mostrado. Nele, na aba E-mail configuramos para quem o relatrio ser
enviado, assunto, corpo do e-mail e escolhendo o formato desejado (Figura 19).
Na aba Account, configuramos o e-mail de envio, ou seja, as nossas configuraes de e-mail para o envio do mesmo.
Concluses
Vimos nesse artigo como trabalhar com o FastReport, a nova ferramenta para gerar relatrios no Delphi. Existem
Vimos nesse artigo como trabalhar com o FastReport, a nova ferramenta para gerar relatrios no Delphi. Existem
muitas outras possibilidades para criarmos relatrios profissionais para suas aplicaes Delphi, assim, no prximo artigo
veremos como criar grficos, cross-tab, trabalhar com templates (semelhante herana) etc.
Um grande abrao a todos e at a prxima!
Sobre o Autor
Luciano Pimenta (NOVO DOMINIO: www.lucianopimenta.com) desenvolvedor Delphi/C#
para aplicaes Web com ASP.NET, Windows com Win32 e Windows Forms com .NET.
Palestrante da 4 edio da Borland Conference (BorCon) e da 1 Delphi Conference. MVP
Embarcadero, grupo de profissionais que ajudam a divulgar o Delphi no mundo. Atualmente
desenvolvedor da SoftDesign fbrica de softwares em Porto Alegre-RS. Autor de mais de
80 artigos e de mais de 600 vdeos aulas publicadas em revistas e sites especializados, alm
de treinamentos presenciais e multimdias. consultor da FP2 Tecnologia (www.fp2.com.br)
onde ministra cursos de programao e banco de dados.
E-mail: www.lucianopimenta.net