Sie sind auf Seite 1von 10

FastReport no Delphi

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).

Figura 1. Aba do Fast Report no Delphi

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.

Figura 2. Ambiente de desenvolvimento de relatrios (fonte: FastReport Users Manual)

Baseado na Figura 2, destacamos a seguir as principais janelas e editores. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 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).

Figura 3. Vinculando o componente de dados com o relatrio

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.

Figura 4. Adicionando bandas ao relatrio

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).

Figura 5. Mudando o campo do objeto facilmente

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).

Figura 6. Editor do Text Object

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).

Figura 7. Editor de expresses do relatrio

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).

Figura 8. Alinhando os componentes do relatrio

Feche o relatrio. No Delphi, adicione um boto e adicione o seguinte cdigo em seu evento OnClick:

f r x R e p o r t 1 . S h o w R e p o r t ( ) ; 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.

Figura 9. Relatrio de listagem em execuo

Figura 10. Relatrio de listagem em execuo

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.

Figura 11. Formatao condicional do relatrio

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).

Figura 12. Formatao do rodap do relatrio

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:

f r x R e p o r t 1 . L o a d F r o m F i l e ( ' L i s t a g e m . f r 3 ' ) ; f r x R e p o r t 1 . S h o w R e p o r t ( ) ;

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:

s e l e c tE M P L O Y E E . f i r s t _ n a m e ,E M P L O Y E E . l a s t _ n a m e , e m p l o y e e . s a l a r y ,D E P A R T M E N T . d e p a r t m e n t f r o mE M P L O Y E E i n n e rj o i nD E P A R T M E N To nD E P A R T M E N T . d e p t _ n o=E M P L O Y E E . d e p t _ n o o r d e rb yD E P A R T M E N T . d e p a r t m e n t Crie um novo frxReport (se desejar, em outro formulrio). Caso seja carregado o relatrio anterior, crie um novo. No esquea de modificar o Data do relatrio. Caso tenha criado um novo formulrio, atende para o nome do formulrio no editor de seleo de DataSets (Figura 3). De um duplo clique no Master Data e vincule com o DbDataSet. Adicione uma banda Group Header. Um editor aberto para configurarmos a banda do grupo. Vamos indicar que o agrupamento se dar pelo campo Department. Podemos ainda indicar uma expresso para o agrupamento. Nas opes de agrupamento, podemos configurar para que a cada grupo, seja mostrado em uma nova pgina ou drill-down, onde clicamos sobre o grupo para mostrar os dados.

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.

Figura 13. Relatrio agrupado

Figura 14. Configurando o somatrio do grupo

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.

Veja na Figura 15 o relatrio com somatrio do grupo e somatrio total. Figura 15. Somatrios no relatrio

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).

Veja na Figura 16 a disposio dos campos nas duas bandas.

Figura 16. Relatrio master/detail Execute o relatrio e veja que os dados esto agrupados de acordo com o nome do empregado. Exportao de relatrios Uma caracterstica interessante que observei no FastReport a quantidade de opes de tipos de exportaes para os relatrios. Veja na Figura 17 a aba de exportaes do FastReport.

Figura 17. Tipos de exportaes do FastReport

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).

Figura 18. Opes de exportao no preview do relatrio

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

Figura 19. Editor para envio por e-mail do relatrio

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

Das könnte Ihnen auch gefallen