58

Gerando relatórios com o FlexReport – Parte 3 (Screencast)

Depois do primeiro artigo sobre o FlexReport e do primeiro screencast sobre o assunto, recebi vários comentários (tanto através dos comentários no blog quanto via e-mail/listas de discussão) dizendo que seria interessante mostrar como fazer relatórios mais elaborados.

Atendendo a todos esses pedidos elaborei este segundo screencast, que é focado em como organizar o layout do relatório gerado com o FlexReport, aproveitando todos os conceitos do screencast anterior.

Espero que sirva para sanar as dúvidas que apareceram desde o último artigo, e continuarei aguardando os comentários de vocês!

Veja esta aplicação funcionando (Use “View Source” para visualizar o código fonte).

#Edit @07/jun/2010
Aqui está um artigo sobre a lib do FlexReport para Flex 4!

Comments 58

  1. Pingback: Gerando relatórios com o FlexReport - Parte 2 (Screencast) | Elvis Fernandes

  2. Ótimo screencast. Seus tutoriais estão ficando cada vez melhores, continue assim.
    Você sabe me dizer se tem como ao invés de exibir um preview gerar um PDF diretamente? É que estou interessado em trabalhar com FlexReport em uma aplicação AIR, por isso acredito que ficaria melhor exibir diretamente em PDF utilizando o componente de exibição de PDF do AIR.
    Um abraço,

  3. Ótimo screencast. Seus tutoriais estão ficando cada vez melhores, continue assim.
    Você sabe me dizer se tem como ao invés de exibir um preview gerar um PDF diretamente? É que estou interessado em trabalhar com FlexReport em uma aplicação AIR, por isso acredito que ficaria melhor exibir diretamente em PDF utilizando o componente de exibição de PDF do AIR.
    Um abraço,

    1. Post
      Author
  4. Mas quase utilize apenas o AlivePDF quais componentes eu poderei usar para que haja controle de quebra de páginas e a visualização seja agradável quando impresso?

  5. Mas quase utilize apenas o AlivePDF quais componentes eu poderei usar para que haja controle de quebra de páginas e a visualização seja agradável quando impresso?

  6. #Pessoal,

    Desculpe a demora para responder os comentários, estava migrando o server … sabe como é …

    #Daniel,

    O AlivePDF é específico para geração de PDFs, ele não tem a mesma “facilidade” que o FlexReport. Acho que vale a pena uma boa olhada na documentação do AlivePDF

    #Marcos Antunes,

    Desculpe, eu habilitei a opção, mas não sei porque cargas d’água subi o swf errado (é, eu consegui). Já atualizei o swf.

    #Willian,

    É isso aí. Agora a app está com “View Source” habilitado, que leva pra esse mesmo endereço que você passou. Obrigado pela força!

    #Todos,

    Abraços!

  7. Post
    Author

    #Pessoal,

    Desculpe a demora para responder os comentários, estava migrando o server … sabe como é …

    #Daniel,

    O AlivePDF é específico para geração de PDFs, ele não tem a mesma “facilidade” que o FlexReport. Acho que vale a pena uma boa olhada na documentação do AlivePDF

    #Marcos Antunes,

    Desculpe, eu habilitei a opção, mas não sei porque cargas d’água subi o swf errado (é, eu consegui). Já atualizei o swf.

    #Willian,

    É isso aí. Agora a app está com “View Source” habilitado, que leva pra esse mesmo endereço que você passou. Obrigado pela força!

    #Todos,

    Abraços!

  8. Muito bom o screencast! To fazendo aqui um gerador de relatório no meu sistema e esse screencast me tirou muitas dúvidas.

    Valeu

  9. Muito bom o screencast! To fazendo aqui um gerador de relatório no meu sistema e esse screencast me tirou muitas dúvidas.

    Valeu

  10. Estou com um problema, baixei seu projeto e testei aqui na minha maquina e o único problema que ta dando é que não ta imprimindo o conteudo do quadro ‘Resumo’ eu tentei aqui no meu projeto e também não consegui. Fiza aparecendo assim: undefined

  11. Estou com um problema, baixei seu projeto e testei aqui na minha maquina e o único problema que ta dando é que não ta imprimindo o conteudo do quadro ‘Resumo’ eu tentei aqui no meu projeto e também não consegui. Fiza aparecendo assim: undefined

  12. Elvis, muito legal os videos que vc fez!
    Vc poderia dar um exemplo de um relatório com header/datails, por exemplo: listar os dados do pedido e embaixo os respectivos itens.
    é possível fazer isso com o FlexReport?
    Valeu!

    1. ah! esqueci de um detalhe, imprimir vários pedidos no mesmo pdf e cada um em uma folha, e sempre pulando as páginas pares para que seja possível imprimir frente e verso.

  13. Elvis, muito legal os videos que vc fez!
    Vc poderia dar um exemplo de um relatório com header/datails, por exemplo: listar os dados do pedido e embaixo os respectivos itens.
    é possível fazer isso com o FlexReport?
    Valeu!

    1. ah! esqueci de um detalhe, imprimir vários pedidos no mesmo pdf e cada um em uma folha, e sempre pulando as páginas pares para que seja possível imprimir frente e verso.

  14. Elvis, tod relatório que coloco um DataGrid, apareceu uma area preta na impressão, no formato de um retangulo, alem disso, gera uma segunda pagina em branco, tem ideia do que pode está acontcendo?

    abraços,

    Emerson Mota.

  15. Elvis, tod relatório que coloco um DataGrid, apareceu uma area preta na impressão, no formato de um retangulo, alem disso, gera uma segunda pagina em branco, tem ideia do que pode está acontcendo?

    abraços,

    Emerson Mota.

  16. Olá Elvis,

    Com ajuda dos seus screencast consegui utulizar o FlexReport, porém não consigo visualizar nada quando estou no windows! Sabe o que pode ser ?

    Obrigada

  17. Olá Elvis,

    Com ajuda dos seus screencast consegui utulizar o FlexReport, porém não consigo visualizar nada quando estou no windows! Sabe o que pode ser ?

    Obrigada

  18. Caro Elvis,

    Gostei muito do seu sc. Me foi muito util. No entanto estou tendo um problema que não consigo entender!!! Na janela de preview não é mostrado o relatório, enquanto que a miniatura da página que é mostrada a esquerda, exibe os detalhes da pagina.

    já revisei tudo e não acho o problema. Confesso já
    estou começando a achar que não vai rolar o uso do componente. Não gostaria de desistir agora, portanto peço a sua ajuda para entender o que está ocorrendo.

    abços.

    Paulo.

    1. Olá, Paulo!

      Provavelmente você está colocando no seu template um componente que está ultrapassando os limites do relatório. Por exemplo, pode ter um componente que está mais largo que o seu relatório.

      Não se esqueça que alguns componentes podem se redimensionar automaticamente dependendo do conteúdo, como os Labels, por exemplo. Certifique-se de que nenhum dos teus componentes está extrapolando o tamanho do relatório.

      Obrigado pelo comentário!

  19. Caro Elvis,

    Gostei muito do seu sc. Me foi muito util. No entanto estou tendo um problema que não consigo entender!!! Na janela de preview não é mostrado o relatório, enquanto que a miniatura da página que é mostrada a esquerda, exibe os detalhes da pagina.

    já revisei tudo e não acho o problema. Confesso já
    estou começando a achar que não vai rolar o uso do componente. Não gostaria de desistir agora, portanto peço a sua ajuda para entender o que está ocorrendo.

    abços.

    Paulo.

    1. Post
      Author

      Olá, Paulo!

      Provavelmente você está colocando no seu template um componente que está ultrapassando os limites do relatório. Por exemplo, pode ter um componente que está mais largo que o seu relatório.

      Não se esqueça que alguns componentes podem se redimensionar automaticamente dependendo do conteúdo, como os Labels, por exemplo. Certifique-se de que nenhum dos teus componentes está extrapolando o tamanho do relatório.

      Obrigado pelo comentário!

  20. Excelente Tutorial, gostaria de tirar uma duvida porque o export to pdf não funciona? Como faço para funcionar ou desabilitar, deixar sem visibilidade?

  21. Olá Elvis,

    Gostaria de parabenizar pelos Screencast’s bastantes simples e fáceis para o entendimento, e perguntar se há possibilidade de demonstrar como poderíamos trabalhar com agrupamento de informações e seus respectivos totais.

  22. Olá Elvis,

    Gostaria de parabenizar pelos Screencast’s bastantes simples e fáceis para o entendimento, e perguntar se há possibilidade de demonstrar como poderíamos trabalhar com agrupamento de informações e seus respectivos totais.

  23. Ótimo tutorial, me ajudou muito cara.
    Mas como seria para fazer um relatório com quebra/agrupamento? Tipo, uma listagem de Cidades com quebra por Estado…

  24. Ótimo tutorial, me ajudou muito cara.
    Mas como seria para fazer um relatório com quebra/agrupamento? Tipo, uma listagem de Cidades com quebra por Estado…

  25. Opa…
    E daria pra fazer um relatorio com quebra/agrupamento por algum campo, como por exemplo uma listagem de todas as cidades brasileiras com quebra por Estado, ou ainda, todas os bairros com quebras por cidade?

  26. Opa…
    E daria pra fazer um relatorio com quebra/agrupamento por algum campo, como por exemplo uma listagem de todas as cidades brasileiras com quebra por Estado, ou ainda, todas os bairros com quebras por cidade?

  27. Muito Bom o Tutorial… Só tenho uma pergunta!
    do lado do botao de impressão tem um com o logo da adobe. como faço ´para aquele botão funcionar normalmente e exportar para PDF

  28. Muito Bom o Tutorial… Só tenho uma pergunta!
    do lado do botao de impressão tem um com o logo da adobe. como faço ´para aquele botão funcionar normalmente e exportar para PDF

  29. Elvis como eu faço pra colocar uma imagem do tipo <mx:image no relatório recebendo um caminho de imagem que vem pelo banco de dados, como por exemplo seu fosse imprimir um cadastro de produto com imagem …
    Como faria ????

  30. Olá Elvis, o tutorial que criou ajudou bastante.
    Estou com um problema.
    Criei os templates e dataproviders conforme o exemplo que você criou mas estou tendo problemas no momento da visualização da impressão
    o programa não está criando uma segunda página

    <PrintComponent width=”100%”>
    <mx:Label text=”Gleba selecionada:” fontWeight=”bold” fontSize=”14″/>
    </PrintComponent>

    <ReportDataGrid id=”glebaSelecionada_reportDG”
    width=”100%” height=”50″>
    <columns>
    <mx:DataGridColumn id=”glebaSelecionada_identificacao_columnDG”
    headerText=”Identificação”
    dataField=”nome”
    width=”{this.glebaSelecionada_identificacao_columnDG.headerText.length}”/>
    <mx:DataGridColumn id=”glebaSelecionada_municipio_columnDG”
    headerText=”Município”
    dataField=”municipioNome”
    width=”{this.glebaSelecionada_municipio_columnDG.headerText.length + 5}”/>
    <mx:DataGridColumn id=”glebaSelecionada_siglaUF_columnDG”
    headerText=”UF”
    dataField=”municipioSiglaUF”
    width=”{this.glebaSelecionada_siglaUF_columnDG.headerText.length + 1}”/>
    <mx:DataGridColumn id=”glebaSelecionada_area_columnDG”
    headerText=”Área(ha)”
    dataField=”area”
    width=”{this.glebaSelecionada_area_columnDG.headerText.length}”/>
    <mx:DataGridColumn id=”glebaSelecionada_classetextural_columnDG”
    headerText=”Classe textural do solo”
    dataField=”classeTexturalNome”
    width=”{this.glebaSelecionada_classetextural_columnDG.headerText.length}”/>
    </columns>
    </ReportDataGrid>

    <mx:Label text=”Dados da gleba selecionada:”
    fontWeight=”bold”
    fontSize=”14″
    width=”100%”/>

    <ReportDataGrid id=”recomendacaoGleba_reportDG”
    width=”100%” height=”50″>
    <columns>
    <mx:DataGridColumn id=”recomendacaoGleba_culturapretendida_columnDG”
    headerText=”Cultura pretendida”
    dataField=”culturaPretendidaNome”
    width=”{this.recomendacaoGleba_culturapretendida_columnDG.headerText.length}”/>
    <mx:DataGridColumn id=”recomendacaoGleba_expecProdutividade_columnDG”
    headerText=”Expectativa de produtividade”
    dataField=”expectativaProdutividade”
    labelFunction=”{Formatos.FormataSeparadorDecimal}”
    width=”{this.recomendacaoGleba_expecProdutividade_columnDG.headerText.length}”/>
    <mx:DataGridColumn id=”recomendacaoGleba_datacriacao”
    headerText=”Registro da recomendação”
    dataField=”dataCriacao”
    width=”{this.recomendacaoGleba_datacriacao.headerText.length}”
    labelFunction=”{Formatos.FormataData}”/>
    </columns>
    </ReportDataGrid>

    <mx:Label text=”Dados da análise do solo:”
    fontWeight=”bold”
    fontSize=”14″/>

    <mx:Label id=”analise_metodoextracao_label”/>

    <mx:Tile direction=”horizontal”
    width=”100%”
    height=”100″>
    <mx:Label id=”analise_saturacao_label”/>
    <mx:Label id=”analise_ctc_label”/>
    <mx:Label id=”analise_classe_label”/>
    <mx:Label id=”analise_fosforo_label”/>
    <mx:Label id=”analise_potassio_label”/>
    <mx:Label id=”analise_mo_label”/>
    <mx:Label id=”analise_teorargila_label”/>
    </mx:Tile>

    <mx:Label text=””/>

    <mx:Label text=”Dados da cultura:”
    fontWeight=”bold”
    fontSize=”14″/>

    <mx:VBox width=”100%”>
    <mx:Label id=”analise_culturapretendida_label”/>
    <mx:Label id=”analise_expectativaprodutividade_label”/>
    <mx:Label id=”analise_prntcalcario_label”/>
    </mx:VBox>

    <mx:Label text=””/>

    <mx:Label text=”Interpretação do solo a partir dos dados inseridos:”
    fontWeight=”bold”
    fontSize=”14″/>

    <mx:Tile direction=”horizontal”
    width=”100%”>
    <mx:Label id=”interpretacao_saturacaoporbases_label”/>
    <mx:Label id=”interpretacao_fosforoP_label”/>
    <mx:Label id=”interpretacao_potassioK_label”/>
    </mx:Tile>

    <mx:Label text=””/>

    <mx:Label text=”Recomendação de calagem a partir dos dados inseridos:”
    fontWeight=”bold”
    fontSize=”14″/>

    <mx:Tile direction=”horizontal”
    width=”100%”>
    <mx:Label id=”recomendacao_dosecalcario_label”/>
    <mx:Label id=”recomendacao_prntcalcario_label”/>
    </mx:Tile>

    <mx:Label text=””/>

    <mx:Label text=”Recomendação de adubação a partir dos dados inseridos:”
    fontWeight=”bold”
    fontSize=”14″/>

    <mx:Label id=”recomendacao_nitrogenio_label”/>

    <mx:Label id=”recomendacao_fosforo_label”/>

    <mx:Label id=”recomendacao_potassio_label”/>

    <mx:Label text=””/>

    <mx:Label text=”Recomendação em doses de formulações comerciais:”
    fontWeight=”bold”
    fontSize=”14″/>

    <mx:Label id=”formulacaonenhuma_label”
    text=”Nenhuma formulação compatível foi encontrada.”
    fontWeight=”bold”
    color=”#0000FF” enabled=”false”/>

    <ReportDataGrid id=”recomendacaoDose_reportDG”
    width=”100%”>
    <columns>
    <mx:DataGridColumn/>
    <mx:DataGridColumn/>
    </columns>
    </ReportDataGrid>
    </Body>

  31. Pingback: FlexReport com o Flex4! | Elvis Fernandes

  32. elvis primeiramente quero agardecer sua iniciativa seu Screencast me ajudou bastante ,entretanto no meu projeto é nessesario colocar no relatorio uma imagen (foto 3X4 e seu endereço é ariginado do banco de dados ai meu amigo o trem travou aqui ja fiz de tudo e nada da foto aparecer só da certo quando coloco a foto statica vc tem alguma dica pra isso ???
    desde ja grato Reginaldo !!!

  33. Tenho que imprimir um relatorio com quebra agrupamento e algo mais…
    Exemplo :
    no datagrid

    Região UF texto
    SUDESTE RIO DE JANEIRO Viagei a passeio
    SUDESTE SÃO PAULO Viagei congresso
    NORDESTE CEARÀ Viagei para comprar bala
    NORDESTE PARAIBA Viageis kjkjjk kjkjkjk jkjkjkj jkljljlkjl lklklklkl lkl klklkl lk lk lk lk kh jh kg khg hjg hjghghygfgygfy ygygygygy
    jhjhj hhkjhkjkjkjk kjkjkjkjk kjkjkjkjkjkjkjkjk jkjkj kjkjk jkjkjk NESTE CAMPO PODE SER VARIAS PÁGINAS.
    jhjhj hhkjhkjkjkjk kjkjkjkjk kjkjkjkjkjkjkjkjk jkjkj kjkjk jkjkjk NESTE CAMPO PODE SER VARIAS PÁGINAS.
    jhjhj hhkjhkjkjkjk kjkjkjkjk kjkjkjkjkjkjkjkjk jkjkj kjkjk jkjkjk NESTE CAMPO PODE SER VARIAS PÁGINAS.

    O CAMPO TEXTO TEM LIMITE DE 5000 CARACTERES.

    Preciso imprimir assim:

    1.SUDESTE
    1.1 RIO DE JANEIRO Viagei a passeio
    1.2 SÃO PAULO Viagei congresso

    2.NORDESTE
    2.1 CEARÀ Viagei para comprar bala
    2.2 PARAIBA Viageis kjkjjk kjkjkjk jkjkjkj jkljljlkjl lklklklkl lkl klklkl lk lk lk lk kh jh kg khg hjg hjghghygfgygfy ygygygygy
    jhjhj hhkjhkjkjkjk kjkjkjkjk kjkjkjkjkjkjkjkjk jkjkj kjkjk jkjkjk NESTE CAMPO PODE SER VARIAS PÁGINAS.
    jhjhj hhkjhkjkjkjk kjkjkjkjk kjkjkjkjkjkjkjkjk jkjkj kjkjk jkjkjk NESTE CAMPO PODE SER VARIAS PÁGINAS.
    jhjhj hhkjhkjkjkjk kjkjkjkjk kjkjkjkjkjkjkjkjk jkjkj kjkjk jkjkjk NESTE CAMPO PODE SER VARIAS PÁGINAS.

    Consigo fazer assim? Tenho que a numeração no Array? O FlexReport vai quebrar página, imprimir cabeçalho quando o do campo TEXTO ocupar diversas páginas?

    Obrigado.
    Claudio Ribeiro
    UERJ

    1. Cláudio,

      O FlexReport não vai fazer nenhum tipo de “subtotalização” pra você. Você
      terá que fazer tudo na mão mesmo.

  34. Olá Elvis .. Gostaria de uma sugestão sua. Tenho um objeto Cliente com uns 10 atributos e outro objeto Compra com uns 30 atributos. Como eu faria para mostrar todos estes atributos num relatório?

    1. Olá, Varlues!

      Você vai mesmo usar o FlexReport? Há muito tempo ele foi abandonado pelo autor do projeto.

      Sugiro que você procure outra solução para gerar os relatórios.

      2011/12/13 Disqus

  35. Olá, queria chamar o relatório em um componentes diferente, quais os parâmetros que devo mudar? Att,

  36. Olá Elvis!

    Primeiramente parabéns pelo trabalho que está fazendo, consegui realizar impressão de relatório através dos teus posts.
    Porém como que eu posso fazer para realizar agrupamentos de dados? Para que agrupe determinada informação e quebre uma linha.???Por favor me ajude!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *