Enfrento dificuldades no preenchimento de subreports feitos no iReport. O padrão utilizado aqui na empresa onde trabalho para o preenchimento de relatórios Jasper são de mapas de parâmetros (parameters maps), que são passados ao relatório no momento de sua geração, através do código Java. Eis um exemplo:
// … Codigo de visualizacao/exportacao do .pdf[/code]
Precisei criar alguns subreports e fiz o procedimento usual de criar um master e colocar os subreports dentro desse master. Todos os parâmetros que devem ser passados aos subreports são também definidos no master para sincronização através da propriedade de subreports “Parameters” do iReports. Fiz então o procedimento do código acima apenas no master e tentei visualizar o relatório. Foram mostradas apenas as informação do master e nada dos subrerports.
Eu estou fazendo algo errado? É preciso passar os mapas de parâmetros (como no código acima) também para os subreports? Se sim, como esse dados aparecerão no master quando eu precisar visualizá-lo/exportá-lo?
Entao cara é o seguinte! Você só precisa definir apenas um map mesmo!
Entao você define todos os parametros que vc passou no seu relatorio principal.
Agora para os seus subrelatorios enxergarem estes paramentros, vc devera passar os parametros que desejar do master para o sub no propio Ireport.
Entao vamos la, supondo que vc tenha o “parametro1” no map, entao vc tera q definir isto no Relatorio Principal.
Agora do relatorio principal, vc deverá passa-lo para o sub, abrindo as propiedade do subRelatorio no relatorio master.
Lá existe a aba “Sub-Relatório (Outros)” e abaixo existe outra aba “Parâmetros do Subrelatorio”, aqui vc deve passar os parametros que você desejar para o subRelatório. (CONFORME ANEXO).
Agora no subRelatorio, vc deve definir o parametro com o mesmo nome que vc passou do relatorio master para o sub! Agora é so utiliza-lo.
Bom, o problema não estava exatamente no preenchimento do relatório no código Java, mas no desenho feito no iReport. Acontece que quando não se utiliza uma fonte de dados (data source) na criação do relatório, como no caso do preenchimento por mapa de parâmetros, o padrão do JasperReport é não mostrar dado algum.
Há uma propriedade do iReport que permite que mesmo que não haja dado, apenas a band details não seja mostrada. Assim, colocando-se os parâmetros advindos do mapa em outras bands (page header, por exemplo) o conteúdo será mostrado. Isso deve ser feito tanto no master quando no(s) subreport(s).