Relatório Ireport com vários itens na linha de detalhe.

Java

10/12/2011

Eu Já fiz um relatório(iReport) a partir de uma chamada de uma Aplicação Web.
como um a coleção de um objeto: codigo, nome, qtde e valor. Colocando esses valores na linha detalhe.
Funcionou perfeitamente, imprimindo várias linhas. Eu usei JRBeanCollectionDataSource.

Mas quando eu preciso de emitir um Relatório(no iReport) como este:
código, nome, endereco, cidade e uf no Page Header e vários telefones na linha DETAIL.
Eu não consegui!

Eu criei uma Collection colecaoRelatorio, onde contém os seguintes campos:
Integer codigo, String nome, String endereco, String cidade, String uf,
Collection de Telefone com o nome: colecaoTelefones.

Onde Telefone contém :
nrDDD, nrTelefone

A impressão referente do PAGE HEADER eu consigo normalmente, mas eu não consigo especificar os campos da coleção de colecaoTelefones que fica dentro da coleção colecaoRelatorio.
Eu já tentei no iReport: $F{colecaoTelefones.nrDDD}, colecaoTelefones.nrDDD, mas não tive sucesso!

O que eu faço para recuperar os dados dos Fields no ireport referente a colecaoTelefones(nrDDD e nrTelefone)?

Régis.
Régis Santos

Régis Santos

Curtidas 0

Respostas

Robson Teixeira

Robson Teixeira

10/12/2011

os campos telefone ou um objeto do tipo Telefone tem que fazer parte da sua coleção para que você possa pegar os dados e mostrar no seu relatorio.

espero ter ajudado
att
robson
GOSTEI 0
Régis Santos

Régis Santos

10/12/2011

Deixe-me explicar melhor:
Eu envio uma coleção denominada colecaoRelatorio,como segue:

class relatorio {

public relatorio(){
}

private String codigo;
private String nome;
private String endereco;
private String uf;
private String cidade;

private Collection<Telefone> telefones;


todos os getters and setters ...


}

class Telefone {
private String nrDDD;
private String nrTelefone;

todos getters e setters ...

}

class ImpressaoRelatorio {

Collection<relatorio> colecaoRelatorio;

Envio a colecaoRelatorio para o Ireport a partir da aplicação Java Web.

}

>>>> Como eu acesso o campo nrDDD e o nrTelefone na linha DETAIL do iReport? desta forma: $F{telefones.nrDDD}?
Eu não sei como acessar estes campos. Qual a maneira que devo escrever para acessá-los no iReport?

Obrigado pela resposta.

Régis.


GOSTEI 0
Robson Teixeira

Robson Teixeira

10/12/2011

eu sugiro você pesquisar sobre um recurso que está presenta nas ultimas versões do jasper reports e do IReport que se chama list onde você vai passar a sua coleção para a list e o proprio Jasper vai iterar a sua coleção de telefones.
qualquer duvida só chamar.
att
robson
GOSTEI 0
Régis Santos

Régis Santos

10/12/2011

Como você escreve no ireport para acessar um campo de uma lista?
Desta forma $F{listaTelefones.nrTelefone}?? Assim eu não consegui.
Por favor, escreva-me a maneira que você acessa um campo em uma lista? Eu não sei como escrevê-la.

Régis
GOSTEI 0
Robson Teixeira

Robson Teixeira

10/12/2011

o uso do seu EL esta correto mas você não pesquisou sobre o recurso que te falei.Peço pra que pesquise sobre o recurso list pois ao compriende-lo automagicamente resolve seu problema. ok

qualquer coisa é so chamar.
att
robson
GOSTEI 0
Régis Santos

Régis Santos

10/12/2011

Eu usei o recurso list(e continua o mesmo problema) e o iReport
não Reconhece esta maneira: $F{produtosComprados.nomeFabricante} como acesso aos dados.

Erro no iReport:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. nomeFabricante cannot be resolved or is not a field                 value = ((java.util.List)field_produtosComprados.getValue()).nomeFabricante  //$JR_EXPR_ID=54$                                                                              <------------> 2. nomeFabricante cannot be resolved or is not a field                 value = ((java.util.List)field_produtosComprados.getOldValue()).nomeFabricante  //$JR_EXPR_ID=54$                                                                                 <------------> 3. nomeFabricante cannot be resolved or is not a field                 value = ((java.util.List)field_produtosComprados.getValue()).nomeFabricante  //$JR_EXPR_ID=54$                                                                              <------------> 3 errors

Régis.
GOSTEI 0
Robson Teixeira

Robson Teixeira

10/12/2011

vc tem q passar sua coleção usando o JRBeanCollectionDataSource e na aba Report Inspector vai aparecer um dataSet que vai esta vinculado a list criada e você vai criar um field novo que vai ser o atributo da sua classe Telefone sacou??
att
robson
GOSTEI 0
Dyego Carmo

Dyego Carmo

10/12/2011

Em meu devspace tem uma aula que ensino EXATAMENTE isto no Jasper , quer dar uma olhadinha? :)

Valeu !
GOSTEI 0
Régis Santos

Régis Santos

10/12/2011

Graças a Deus eu consegui finalizar o meu relatório. Este tópico pode ser fechado.
GOSTEI 0
Davi Costa

Davi Costa

10/12/2011

Show de bola! Senão me engano tem uma opção em cima do chamado para vc encerrá-lo

att Davi
GOSTEI 0
Régis Santos

Régis Santos

10/12/2011

Infelizmente, eu não encontrei o botão ou link para fechar este tópico.

Régis.
GOSTEI 0
Dyego Carmo

Dyego Carmo

10/12/2011

Muito bom !

Problema resolvido ? Poderia fechar o chamado ?

Obrigadao !!!
GOSTEI 0
Diego Azevedo

Diego Azevedo

10/12/2011

Em meu devspace tem uma aula que ensino EXATAMENTE isto no Jasper , quer dar uma olhadinha? :)

Valeu !


Olá Dyego, procurei essa video aula no seu devespaço, mais lá tem varias video aulas sobre Ireport. Poderia me dizer qual delas resolve esse problema?

Obrigado
GOSTEI 0
Diego Azevedo

Diego Azevedo

10/12/2011

Olá Dyego, procurei essa video aula no seu devespaço, mais lá tem varias video aulas sobre Ireport. Poderia me dizer qual delas resolve esse problema?

Obrigado
GOSTEI 0
Régis Santos

Régis Santos

10/12/2011

Desculpe, mas eu procurei por todos os lados e não encontrei um botão fechar tópico.
Por favor, Onde fica este botão para fechar este tópico?

Régis.
GOSTEI 0
Marcelo Ferreira

Marcelo Ferreira

10/12/2011

Acho que a primeira coisa que se devia fazer quando se acha uma solução era postar como se foi resolvida! E não simlesmente dizer qe resolveu e fechar o tópico! Esse povo devia ser banido de todos os foruns!
GOSTEI 0
Michael Gloria

Michael Gloria

10/12/2011

qual foi a solução encontrada, estou com o mesmo problema
GOSTEI 0
POSTAR