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+