iReport + List / Collection

7 respostas
fabioebner

Pessoal eu passo um Collection de String para o meu relatorio… COMO EU PERCORRO ELE??? eu nao mando ele via JRDataSource (pq aqui ja vai outra coisa) eu mando no parameter.put(“lista” listaArray) tentei de todas as formas. eu consigo mostrar o conteudo dela inteira… tipo [a,b,c,d,e] mas nao consigo listar eles

a
b
c
d
e

alguem sabe como fazer isse merdA??

vlw

7 Respostas

Mero_Aprendiz

fabioebner:
Pessoal eu passo um Collection de String para o meu relatorio… COMO EU PERCORRO ELE??? eu nao mando ele via JRDataSource (pq aqui ja vai outra coisa) eu mando no parameter.put(“lista” listaArray) tentei de todas as formas. eu consigo mostrar o conteudo dela inteira… tipo [a,b,c,d,e] mas nao consigo listar eles

a
b
c
d
e

alguem sabe como fazer isse merdA??

vlw

Conselho:
Para relatório complexos, sempre use JRCollectionDataSource.
Trate os dados no Java, e apenas mande para o Jasper o que vai ser exibido.

[]'s
JL

fabioebner

Entao mlkao ja tentei… mas nao consegui usar apenas o JRCollectionDataSource pq nele eu ja mando uma lista de documento porem cada documento tem uma lista de itens… e nao consigo percorrer nessa lista de itens para cada documento… so consigo percorrer os documentos, por isso q perguntei…

valeu

Mero_Aprendiz

fabioebner:
Entao mlkao ja tentei… mas nao consegui usar apenas o JRCollectionDataSource pq nele eu ja mando uma lista de documento porem cada documento tem uma lista de itens… e nao consigo percorrer nessa lista de itens para cada documento… so consigo percorrer os documentos, por isso q perguntei…
valeu

Deixa eu me expressar melhor.
Para relatório muito complexo, sempre use o JRCollectionDataSource para exibir os dados.
Quando o relatório é complexo para conter listas que não estão dentro do que será percorrido pelo detail (no seu caso, que é iterado pelo JRDataSource), é melhor sempre tratar os dados que serão exibidos no relátorio do lado do Java.
Se você tratar os dados como eles deve ser exibidos, e enviar eles prontinhos, sem condições especiais de exibição, tudo fica mais fácil, inclusive a manutenção por parte de outros programadores que também trabalham com você.
Acredito que assim seu problema com esse relatório vai ser resovido.

[]'s
JL

fabioebner

Entao cara eu entendi… agora eu nao consegui visualizar em como resolver isso… vou te passar meu problema e ve se tu consegue me dar uma luz

eu tenho uma lista de TbDocumento(tem varios campos aqui como nomeDocumento, Codigo, Data e tenho 3 Collection aqui) TbParte TbExigenciaDocumento

entao para cada 1 TbDocumento eu tenho x TbParte e x TbExigenciaDocumento… preciso no meu formulario listar os documentos e para cada documento listar as partes e as exigencias…

entendeu?? pode me dar uma luz nisso…

M

Fabio,
Voce conseguiu resolver isso?? Estou tendo o mesmo problema.

Valew
Marcio

Mero_Aprendiz

fabioebner:
Entao cara eu entendi… agora eu nao consegui visualizar em como resolver isso… vou te passar meu problema e ve se tu consegue me dar uma luz
eu tenho uma lista de TbDocumento(tem varios campos aqui como nomeDocumento, Codigo, Data e tenho 3 Collection aqui) TbParte TbExigenciaDocumento
entao para cada 1 TbDocumento eu tenho x TbParte e x TbExigenciaDocumento… preciso no meu formulario listar os documentos e para cada documento listar as partes e as exigencias…
entendeu?? pode me dar uma luz nisso…

Olá Fábio.
Bem, para o problema que você me falou, vejo inicialmente uma solução que você pode tentar.
Já que você passa para o Jasper uma Array de TbDocumentos, crie um helper com os valores que serão exibidos, e as listas de TbParte e TbExigenciasDocumento você passa como atribudo do helper mesmo, mas como JRCollectionDataSource.
Dentro do relatório, crie dois sub-relatório dos atributos de JRCollectionDataSource do helper que você criou. Assim para cara iteração de TbDocumento, os sub-relatório de TbParte e TbExigenciasDocumento também serão iterados.
Consegui entender?

[]'s
JL

jaspionrox

Olá,
para passar um collection como ds para o ireport eu uso a classe JRBeanCollectionDataSource

JRBeanCollectionDataSource jrCol = new JRBeanCollectionDataSource(sua_collection);

no caso a collection eh tipada com um objeto modelo para o relatorio.

Criado 17 de maio de 2009
Ultima resposta 20 de mai. de 2009
Respostas 7
Participantes 4