Jasper reports - Ligar o subreport com o report principal - Não era pra ser simples?

Bom dia,

Tenho um relatório que tem 3 subrelatórios. Tenho uma lista de dados pro relatório principal, e mais uma lista pra cada um dos três subrelatórios. A lista de dados do meu primeiro relatório, tem apenas uma lista de anos. Ex: 2010, 2011, 2012, 2013. Até aí, tudo bem. O problema são os agrupamentos.

Preciso fazer um agrupamento que traga o conjunto de dados de cada subrelatório para o ano sendo tratado. Tem que sair assim:

[quote]–> 2010

  • Relatório 1 com dados de 2010
  • Relatório 2 com dados de 2010
  • Relatório 3 com dados de 2010

–> 2011

  • Relatório 1 com dados de 2011
  • Relatório 2 com dados de 2011
  • Relatório 3 com dados de 2011
    [/quote]

E assim por diante.

O problema é que eu não estou conseguindo ligar o relatório principal no subrelatório. Coloquei um parametro ANO passando de um pro outro, mas não sei onde configurar no subrelatório para que só imprima com base nesse parametro. Está saindo assim:

–> 2010

[quote]- Relatório 1 com dados de todos os anos

  • Relatório 2 com dados de todos os anos
  • Relatório 3 com dados de todos os anos

–> 2011

  • Relatório 1 sem nenhum dado, pois já saiu tudo no primeiro
  • Relatório 2 sem nenhum dado, pois já saiu tudo no primeiro
  • Relatório 3 sem nenhum dado, pois já saiu tudo no primeiro[/quote]

Creio que o problema é por causa da forma que estou passando os dados pro relatório. Estou passando em Lists completos… Por exemplo, pra este caso, passei um ListPrincipal, e um ListRelatorio1, um ListRelatorio2, e um um ListRelatorio3. Lá dentro tem todos os dados de todos os anos, pois eu esperava organizar essa visualização no Jasper.

Depois de algumas pesquisas no Google, percebi que geralmente as pessoas quando fazem isso, usam a Query do relatório embutida no Jasper, e colocam na expressão de filtragem da Query um WHERE comparando com o parametro, pq assim só virão os dados certos. Bom, eu não tenho como fazer isso, preciso usar os lists, até por uma questão de reutilização - as mesmas listas já são criadas por outro motivo no código. Se eu embutisse a Query, ia ficar 2 SQLs.

Mas creio que deve ter uma forma de fazer a filtragem, não é possível. Talvez um scriplet que avalie o detalhe antes? Alguma coisa do tipo? Ou é algo simples que não estou enxergando?

Por favor, me dêem um help aí. Sei que alguém aí já fez ou sabe como fazer isso. Não é possível que nos meus primeiros relatórios no Jasper, já estou esbarrando em limitação de ferramenta… me recuso a acreditar!

Agradeço e Aguardo.

Não sei se vai te ajudar.

Eu faço isso colocando no properties do subreport no atributo Data Source Expression :

Sim… Isso eu já estou fazendo. O datasource está sendo passado com sucesso, e os dados sendo exibidos. Porém o problema é que estão sendo exibidos sem ligação com o relatório principal.

Todo o problema na verdade é filtrar a Lista do subrelatório para mostrar apenas os dados de um ano especifico, conforme passado por parametro.

Nunca precisei fazer esse tipo de tratamento no jasper.

Acho mais fácil passar as listas com o tratamento feito no java.

Se conseguir fazer o tratamento no jasper poste no forum para compartilhar esse conhecimento.