JasperReports: sub-relatório e JRBeanCollectionDataSource furtador

Estou começando a trabalhar com sub-relatórios. No relatório mestre e mostro os dados pessoais de um determinado cliente. No sub-relatório, eu trabalho com um JRBeanCollectionDataSource que recebe uma List de um determinado tipo de objeto - Dependente - , isto é, devem ser repetidos no detail do mestre quadros com dados de cada um dos dependentes.

O problema é que, ao ser gerado o PDF, sempre falta o quadro do primeiro Dependente da List. Eu busco os objetos do banco utilizando Hibernate, e eles vêm no número correto. Somente no sub-relatório que o primeiro objeto desaparece; só resolvo se adicionar qualquer coisa (até null) na primeira posição da lista, isto é, a lista tem que possuir um elemento a mais para que todos os dependentes sejam exibidos no sub-relatório. Do contrário, o primeiro não aparece.
Em resumo: o jasper desconsidera sempre o primeiro elemento da lista.

Ele gera o número correto de páginas também.
É assim mesmo, ou algo bizarro está acontecendo?

(...)
List dependentes = dependenteDAO().findById(cliente.getId()); //todos vêm OK, já verificado.

dependentes.add(0, new Dependente()); //se não fizer isso, o primeiro some do relatório.

JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(dependentes);
map.put("dependentes", ds);
JasperFillManager.fillReportToFile("dependentes.jasper", map, ds);
JasperExportManager.exportReportToPdfFile("dependentes.jrprint", "C:/relatorios");
//Gerado com sucesso.


Eu achei meio estranha a forma que tu criou o relatório… tu usa o ds ou o map para o subreport? Os dados dos servidores estão na mesma coleção?

É a lista setada no ds e o ds setado no map…
Mas descobri o problema, em vez de usar o ds no método do JasperFillManager, devia ter usado um novo JREmptyDataSource:

JasperFillManager.fillReportToFile("dependentes.jasper", map, new JREmptyDataSource());De qualquer forma, obrigado pela atenção… :wink:

Tu não tem uma classe que pode identificar os servidores com um atributo (lista) para os dependentes? Se sim tu poderia mandar uma lista destes objetos para o relatório.

A respeito do ds e map, como tu está usando o campo de parâmetros não precisa ser um JRBeanCollection… e sim a coleção de objetos apenas. Mas acho que fica melhor usar o ds mesmo.

[quote=mutano]Tu não tem uma classe que pode identificar os servidores com um atributo (lista) para os dependentes? Se sim tu poderia mandar uma lista destes objetos para o relatório.

A respeito do ds e map, como tu está usando o campo de parâmetros não precisa ser um JRBeanCollection… e sim a coleção de objetos apenas. Mas acho que fica melhor usar o ds mesmo.[/quote]Bem, não funcionou assim… só setando o ds mesmo =/

antonioni, eu gostei demais desse jeito que tu tah fazendo os relatorios, sem precisar criar data sources customizados…porém nao estou conseguindo fazer da mesma forma…
vc poderia me passar seu email para conversarmos em pvt sobre isso, e se voce puder, me passar seus codigos fontes para eu ter uma base ??
valeu
abracos