Consegui resolver, no subreport do report principal em “Subreport properties --> Parameters” adicionei um parametro NAME=Id EXPRESSION=$F{Id}
Depois dentro do subReport criei um parametro de nome Id do tipo Integer e depois em “More --> Filter Expression” adicionei $F{Id}.equals($P{Id})
R
root_
savoine:
Consegui resolver, no subreport do report principal em “Subreport properties --> Parameters” adicionei um parametro NAME=Id EXPRESSION=$F{Id}
Depois dentro do subReport criei um parametro de nome Id do tipo Integer e depois em “More --> Filter Expression” adicionei $F{Id}.equals($P{Id})
Olá Savoine, como ficou seu código no java para esse tipo de relatório com JRBeanDatasource com subojetos? Estou com um problema idêntico ao seu.
Realizei o filterExpression mas não adiantou n.
E
eduJava
cara eu faço tudo sempre pelo java
eu crio uma lista de JRBeanCollectionDataSource, dentro de cada objeto dessa lista eu crio mais uma lista do tipo JRBeanCollectionDataSource para poder montar o subrelatorio
exemplo
publicclassTeste{privateStringteste1;privateStringteste2;privateJRBeanCollectionDataSourcelista;//aqui tem sua lista que monta o subrelatorio}
no subrelatorio no atributo data source expression vc coloca o $F{lista}, pronto agora é só usar os atributos dessa lista interna no subrelatorio.
R
root_
Consegui…
Seguite:
Tenho a seguinte classe exemplo:
No Ireport, relatório principal eu la na aba de conexão->JavaBean Data Source eu escolho a classe Axxx;
No componente subreport, na propriedade Connection Type deixe Use a Data Source expression e na propriedade Data Source Expression use sua List/Collection, no caso do exemplo ficaria new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{objetoBList}) e na propriedade Parameters Map Expression passe o $P{REPORT_PARAMETERS_MAP} do relatório principal (fazendo com que o subrelatório receba também todos os parâmetros que foram passados para o relatório principal).
Ainda no relatório principal adicione um parâmetro que será utilizado como filtro de expressão para o subreport, no meu caso utilizei o campo identificador x1.
No Subreport vc escolhe como conexao o JavaBean Data Source do da classe B e na propriedade do subreport Filter Expression adicione um filtro no qual vc definiria a filtragem de para cada Objeto Axxx imprima todos os objetos da classe B B, mais ou menos assim: $P{x1}.equals($F{a}.getx1())
Tentarei realizar uma "VÍDEO DICA", postar no youtube e deixar o link aqui.
E
eduJava
na verdade vc está fazendo errado, não precisaria passar esse Filter Expression, pois na sua coleçao só deveria ter dados associados a ele, dai vc nao precisaria bater chave, vc esta precisando fazer isso pois está passando coisas q nao são dele.
Uma coisa que eu penso em relatório ireport é, fazer tudo em java e nunca ficar colocando muita regra no ireport, dai fica mais facil dar manutençao.
R
root_
eduJava:
na verdade vc está fazendo errado, não precisaria passar esse Filter Expression, pois na sua coleçao só deveria ter dados associados a ele, dai vc nao precisaria bater chave, vc esta precisando fazer isso pois está passando coisas q nao são dele.
Uma coisa que eu penso em relatório ireport é, fazer tudo em java e nunca ficar colocando muita regra no ireport, dai fica mais facil dar manutençao.
Certo eduJava! O Filter Expression não se faz necessário se o “Objeto Principal(do relatório principal)” e o subreport estão na mesma banda!