JasperReports ou IReports?

Pelo que andei pesquisando o JasperReports é um framework que gera os relatórios através de códigos xml e o IReport facilita a vida gerando esse xml. Minha dúvida é a seguinte:

Tenho que gerar um relatório. Não faço a minima idéia de onde estão os componentes até o momento que o usuário manda gerar. O usuário pode inserir imagens, textos, campos do banco, retangulos, circulos, linhas, e por ai vai. Ele escolhe o lugar que eles irão ficar.

Pra gerar um relatório desses eu teria que programar os arquivos xml do JasperReports ou tem como fazer com o IReport?

vc quer fazer um relatorio dinâmico?

[quote=vinidouradoh]vc quer fazer um relatorio dinâmico?
[/quote]

Pelo que pesquisei é mais ou menos isso que eu quero. Desculpem a ignorancia, comecei a ler sobre relatórios agora :roll:

marcio_gs,

uma dica, o iReport gera jasper, que é baseado em XML, é dificil você gerar um XML dinâmico, entende? Essa história de [quote]Ele escolhe o lugar que eles irão ficar.[/quote] é que é o problema. Acho que você deve definir um layout de relatório com o cliente antes de qualquer coisa, só depois você partir para o implementação do relatório. Posso estar errado, alguém que saiba mais aí pode me contradizer, mas eu acho relatório dinâmico, pelo menos no iReport, é no mínimo, muito complicado.

Você perguntou :

[quote]Pra gerar um relatório desses eu teria que programar os arquivos xml do JasperReports ou tem como fazer com o IReport?[/quote], a reposta é, se não for dinâmico, você pode fazer tudo visualmente no iReport.

Espero ter ajudado,

vlw

ps: [quote]Desculpem a ignorancia, comecei a ler sobre relatórios agora[/quote]
Tá desculpado…
hehehehehe
( brincadeira tá )

Olá marcio_gs,

Eu uso muito relatórios, tanto pelo iReport como dinâmicos. Veja como faço nos dois casos:

  • O iReport é uma espécie de IDE. Da mesma forma que o Eclipse/NetBeans te ajudam a fazer os .java, o iReport te ajuda a fazer o .jrxml. Vc não precisa escrever os jrxmls “na unha”. Vc desenha seu relatório pelo iReport e ele converte isso pra um .jrxml que possa ser reconhecido pelo jasper. Depois do relatório feito, vc pode já no iReport mandar gerar o .jasper (.jasper está para .jrxml assim como .class está para .java) e trabalhar dentro do seu código java chamando direto esse .jasper. Outra alternativa é não gerar o .jasper pelo iReport e em tempo de execução, dentro do seu código .java vc faz essa geração antes de apresentar o relatório. Eu uso das duas formas dependendo do caso, ambas funcionam bem.

  • Existem casos em que preciso de relatórios dinâmicos. Vc tem apenas um relatório que precisa ser dinâmico, eu fiz um gerador de relatórios, ou seja, meu usuário pode escolher tudo e ele faz seu relatório. Fiz um programa que permite ao usuário fazer seu relatório. Como faço isso? Bem, depois que eu pego do usuário tudo que ele vai querer no seu relatório (o que no seu caso parece que seriam formas geométricas, sei lá…) enfim, depois que pego o que o usuário vai querer, meu programa em java escreve o .jrxml adequado para aquilo. É como se eu tivesse feito um “mini iReport”. A idéia é a msma, assim como o iReport eu leio as informações visuais que o usuário me deu e então transformo aquilo num .jrxml. Ai qdo o usuário for rodar o relatório eu em tempo de execução, a partir do .jrxml, gero o .jasper, como eu já expliquei no item acima.

Vc deve estar se perguntando: Dá pra eu fazer isso?

Sim! Claro que dá! Mas eu acho que vc precisava antes de um pouco mais de experiência em relatórios… eu consegui fazer um programa que escreve .jrxml depois de usar o iReport por um bom tempo…

Pq. não manda pra gente uns exemplos de como ficaria esses relatórios? Sei lá, faça no word msm… quem sabe não tem outra forma, talvez de vc reescrever apenas parte do .jrxml e não ele inteiro. Temos um caso aqui assim… apenas a parte do detalhe que muda, o número de colunas mudam, então reescrevemos em tempo de execução apenas esse trecho. Temos tb casos em que usamos sub-reports dentro dos detalhes, isso funciona muito bem qdo temos vários layouts de relatórios, só que vários layouts conhecidos.

Enfim, nos mande um exemplo, ai vemos alguma outra idéia pra vc, ou se vc terá que escrever o .jrxml em tempo de execução msm.

T+

E no Java? Dá pra criar o relatório no java com a API do JasperReports? Acho que vou tentar fazer assim.

[quote=marcio_gs]Pelo que andei pesquisando o JasperReports é um framework que gera os relatórios através de códigos xml e o IReport facilita a vida gerando esse xml. Minha dúvida é a seguinte:

Tenho que gerar um relatório. Não faço a minima idéia de onde estão os componentes até o momento que o usuário manda gerar. O usuário pode inserir imagens, textos, campos do banco, retangulos, circulos, linhas, e por ai vai. Ele escolhe o lugar que eles irão ficar.

Pra gerar um relatório desses eu teria que programar os arquivos xml do JasperReports ou tem como fazer com o IReport?[/quote]

É cara, acho que vc vai ter que fazer algo parecido com o que a RenataFA disse: Gerar na unha os .jrxml e depois compilar e executar.

Um bom começo, é vc criar um relatório parecido com o que vc quer gerar no iReport. Depois vc pode abrir o fonte .jrxml do teu relatório e estudar as tags xml e ver como são distribuidos os componentes.

Att

Então RenataFA aqui está um exemplo:

Tela que o usuário edita:

Relatório que a tela acima gerou:

Vou seguir seus conselhos e os do g4j :wink:

Boa cara.

Eu já pensei em fazer algo assim, mas nem tinha pensado no esquema de gerar o jrxml dinamicamente.
Acredito que não seja um trabalho trivial. Deverás perder alguns fios de cabelo!

Boa sorte!