ArrayList
Boa tarde
Estou criando um relatorio, faço a conexão desse relatorio com JRBeanCollectionDataSource, e estou passando uma lista que contém meus campos, até aí tudo bem, se eu jogar os meus campos diretamente no relatorio, funciona, apresenta os valores e tudo mais.
O meu problema está quando tenho um campo que é um ArrayList dentro da minha classe a estrutura que estou passando como "base de dados" no caso uma coleção seria assim:
Pegando o exemplo do campo vprest a classe ValorPrestacaoServico está estruturada assim:
o campo Componente é um ArrayList
Como faço para listar esses valores dentro do iReport?
por exemplo, hoje no meu iReport para campos normais, eu passo
Se alguém puder me dar uma ajuda, estou realmente precisando terminar isso o quanto antes
Obrigado
Estou criando um relatorio, faço a conexão desse relatorio com JRBeanCollectionDataSource, e estou passando uma lista que contém meus campos, até aí tudo bem, se eu jogar os meus campos diretamente no relatorio, funciona, apresenta os valores e tudo mais.
O meu problema está quando tenho um campo que é um ArrayList dentro da minha classe a estrutura que estou passando como "base de dados" no caso uma coleção seria assim:
public class Tags implements Serializable {
private XMLIde ide = new XMLIde();
private Complemento compl = new Complemento();
private Emitente emit = new Emitente();
private Expedidor exp = new Expedidor();
private Recebedor receb = new Recebedor();
private Remetente rem = new Remetente();
private Destinatario dest = new Destinatario();
private ValorPrestacaoServico vprest = new ValorPrestacaoServico();
private Impostos imp = new Impostos();
private InformacoesCTe inf = new InformacoesCTe();
private FaturamentoVeic fat = new FaturamentoVeic();
}
Pegando o exemplo do campo vprest a classe ValorPrestacaoServico está estruturada assim:
public class ValorPrestacaoServico {
private String vTPrest = "";
private String vRec = "";
private ArrayList<ComponentPrestacao> Componente = new ArrayList();
}
o campo Componente é um ArrayList
Como faço para listar esses valores dentro do iReport?
por exemplo, hoje no meu iReport para campos normais, eu passo
$F.getvRec()
Se alguém puder me dar uma ajuda, estou realmente precisando terminar isso o quanto antes
Obrigado
Josivan Laskoski
Curtidas 0
Respostas
Douglas
02/12/2013
Josivan, eu nunca mexi com IReport, mas você pode utilizar a condição "Foreach" para que você possa ir preenchendo tudo que estiver dentro da coleção e ir armazenando
numa variável acumuladora para você exibir no seu relatório.
numa variável acumuladora para você exibir no seu relatório.
GOSTEI 0
Eduardo Pessoa
02/12/2013
Josivan, eu nunca mexi com IReport, mas você pode utilizar a condição "Foreach" para que você possa ir preenchendo tudo que estiver dentro da coleção e ir armazenando
numa variável acumuladora para você exibir no seu relatório.
numa variável acumuladora para você exibir no seu relatório.
douglas, como ficaria o codigo?
GOSTEI 0
Josivan Laskoski
02/12/2013
Bom depois quebrar a cabeça, consegui resolver.
A solução é simples mas não muito logica, pois você em modo de desenvolvimento não consegue "ver" o funcionamento, mas enfim, vamos lá.
Na atual situação onde eu tenho um ArrayList dentro de uma classe chamada por outra classe é possível sim conseguir pegar esses dados e imprimir.
Para isso é necessário criar um subReport.
Passos:
1 - Relatorio principal: Cria um parametro [nome_que_desejar] mas com o tipo de dados java.long.Object
2 - Passe um parametro para sua chamada do relatorio:
3 - Feito isso, Criei um SubReport, esse pode ser um subReport novo ou já existente, funciona igual
4 - Na etapa de Conexão por Expressão, marque Use a JRDatasource Expression
5 - Selecione o parametro que voce criou (java.long.Object)
6 - Vá ate seu SubReport e crie manualmente os campos que estão na tua classe, ou no caso, que formam seu objeto que é um ArrayList
Feito isso é so executar o report e ver se está tudo certo.
Espero que ajude alguém...
A solução é simples mas não muito logica, pois você em modo de desenvolvimento não consegue "ver" o funcionamento, mas enfim, vamos lá.
Na atual situação onde eu tenho um ArrayList dentro de uma classe chamada por outra classe é possível sim conseguir pegar esses dados e imprimir.
Para isso é necessário criar um subReport.
Passos:
1 - Relatorio principal: Cria um parametro [nome_que_desejar] mas com o tipo de dados java.long.Object
2 - Passe um parametro para sua chamada do relatorio:
JRDataSource dsComponente = new JRBeanCollectionDataSource(tags.getVprest().getComponente());
Map<String, Object> map = new HashMap<String, Object>();
map.put("componentes", dsComponente);
3 - Feito isso, Criei um SubReport, esse pode ser um subReport novo ou já existente, funciona igual
4 - Na etapa de Conexão por Expressão, marque Use a JRDatasource Expression
5 - Selecione o parametro que voce criou (java.long.Object)
6 - Vá ate seu SubReport e crie manualmente os campos que estão na tua classe, ou no caso, que formam seu objeto que é um ArrayList
Feito isso é so executar o report e ver se está tudo certo.
Espero que ajude alguém...
GOSTEI 0
Douglas
02/12/2013
Josivan, que bom que resolveu. Bons Códigos.
GOSTEI 0
Eduardo Pessoa
02/12/2013
otimo, obrigado pelo retorno.
GOSTEI 0