10
FastReport no Delphi FastReport é um gerador de relatórios presente no Delphi desde a sua versão 4. A partir da versão XE2, passou a ser a ferramenta de relatórios “oficial” do Delphi. Com o FastReport podemos criar poderosos relatórios pra nossas aplicações Win32 e FireMonkey com Delphi. A ferramenta ainda possui suporte (adquirido separadamente) para .NET, Mono e Lazarus. Possui ainda uma ferramenta chamada FastCube para análise de dados e construção de relatórios e gráficos (OLAP), uma ferramenta de scripts (FastScript) e o FastQueryBuilder, construtor visual de consultas SQL. Para ver exemplos e outras informações sobre essas ferramentas, acesse: www.fast-report.com/pt/. Nesse artigo, vamos conhecer a versão do FastReport que acompanha o Delphi XE4, aprendendo a criar relatórios simples, agrupados, formatações 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 relatórios simples, usando dois componentes: o frxReport e o frxDBDataSet. O primeiro é o editor de relatórios, onde basta dar um duplo clique que teremos o ambiente de criação dos relatórios (Figura 2). O segundo faz a ponte, entre os dados e o relatório.

Fast Report Tutorial

Embed Size (px)

Citation preview

  • 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. Report designer: local onde vamos adicionar as bandas e os objetos para o relatrio;

    2. Barra de menus;

    3. Barra de ferramentas: botes com as opes de carregar relatrios, criar novos, salvar etc;

    4. Barra de ferramentas do objeto: objetos que podem ser adicionados ao relatrio;

    5. Report page tabs: abas para configurao da pgina do relatrio;

    6. Report tree: janela onde podemos visualizar as bandas e objetos inseridos no relatrio;

    7. Object Inspector: janela para definio das propriedades dos objetos do relatrio;

    8. Data tree: janela com os objetos de dados do relatrio. Podemos arrastar facilmente um campo para o relatrio;

    9. Rgua;

    10. 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:

  • frxReport1.ShowReport();

    Execute a aplicao e visualize o relatrio em funcionamento (Figura 9).

    Figura 9. Relatrio de listagem em execuo

    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 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: > 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:

    frxReport1.LoadFromFile('Listagem.fr3');frxReport1.ShowReport();

    Nota: caso o FastReport no encontre o arquivo, nenhum erro mostrado, apenas o relatrio no exibe nenhum

    registro.

    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:

    select EMPLOYEE.first_name, EMPLOYEE.last_name, employee.salary, DEPARTMENT.departmentfrom EMPLOYEEinner join DEPARTMENT on DEPARTMENT.dept_no = EMPLOYEE.dept_noorder by DEPARTMENT.department

    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.

    Figura 13. Relatrio agrupado

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

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

    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. MVPEmbarcadero, 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 de80 artigos e de mais de 600 vdeos aulas publicadas em revistas e sites especializados, almde 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