IReport - Subreport - Lista dentro de Lista usando JRBeanCollectionDataSource [RESOLVIDO]  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
warley
Java Ninja
[Avatar]

Membro desde: 16/03/2004 18:46:25
Mensagens: 266
Localização: Vitória - ES
Offline

Olá a todos...

Pessoal estou criando um relatório que possui um subreport.
Basicamente eu tenho uma lista de objetos e em cada objeto eu tenho uma outra lista de objetos.

Vejam o código:


No meu relatório pricipal eu tenho 3 filds : nome (do tipo String), matrícula (do tipo String) e listaExtratos (do tipo java.util.List).
No meu subreport eu coloquei apenas um fild que é do tipo String e coloquei o connection type como "use datasource expression" e em Data Source Expression eu coloquei $F{listaExtratos}.

Quando eu rodo o relatório acontede o seguinte erro:




Alguêm sabe o motivo do erro?

Obrigado.

This message was edited 1 time. Last update was at 14/01/2010 14:39:33


Ninguém é tão grande que não possa aprender, nem tão pequeno que não possa ensinar

Já me perguntaram: "O porquê que tem que ser em Java?"
Eu respondi: "Por quê não pode ser?"

- SCWCD 1.4
- SCJP 5.0
- SCJA 1.0
[Email]
fabiozoroastro
GUJ Master
[Avatar]

Membro desde: 15/05/2006 16:23:01
Mensagens: 1262
Offline

Isso ocorre na hora de compilar seu relatório?

[]'s

..."Apenas sorria!"

Twitter

Blog

warley
Java Ninja
[Avatar]

Membro desde: 16/03/2004 18:46:25
Mensagens: 266
Localização: Vitória - ES
Offline

O erro ocorre quando eu executo o relatório.

Ninguém é tão grande que não possa aprender, nem tão pequeno que não possa ensinar

Já me perguntaram: "O porquê que tem que ser em Java?"
Eu respondi: "Por quê não pode ser?"

- SCWCD 1.4
- SCJP 5.0
- SCJA 1.0
[Email]
warley
Java Ninja
[Avatar]

Membro desde: 16/03/2004 18:46:25
Mensagens: 266
Localização: Vitória - ES
Offline


Pessola consegui!!!

Segue a solução:

A minha classe BeneficiarioTO possui os seguintes atribusto:

private String matricula;
private String nome;
List<ExtratoTO> listaExtratos;

No IReport eu mapiei os dois primeiro com String e o atributo listaExtratos como java.util.List.

Agora o pulo do gato: Inseri o subreport e coloquei as seguintes propriedades:

connection type: use datasource
data souce expression: new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{listaExtratos})



No subrepostes eu coloquei os atritutos contidos no meu objeto ExtratoTO com os mesmo data types.

E funcionou!

Obrigado e um abraço para todos.

Ninguém é tão grande que não possa aprender, nem tão pequeno que não possa ensinar

Já me perguntaram: "O porquê que tem que ser em Java?"
Eu respondi: "Por quê não pode ser?"

- SCWCD 1.4
- SCJP 5.0
- SCJA 1.0
[Email]
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Olá warley, cara, revivendo este seu post, estou conseguindo gerar o relatorio seguindo o que vc passou neste post, so não to conseguindo pegar dinamicamente o subrelatorio para exibição, quando seto na mão o caminho absoluto do arquivo ai funciona legal, mas quando tento por o contexto da minha aplicação web ele não encontra o .jasper e ele esta la sim.

Como vc fez pra pegar dinamicamente o subrelatorio???

[]'s

________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Pelo que eu pude entender você quer pegar o Jasper pelo contexto, pegar o path dele e mandar pro relatório principal. É isso? Se for isso, você pode criar um parâmetro dentro do relatório, colocar esse parâmetro como caminho pro subrelatório e, quando for executar a aplicação, pegar no contexto, obter o path e setar o parâmetro.

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Olá Andre, mesmo eu setando manualmente ou pegando o contexto pelo faces, ele não consegue achar o subrelatorio, e sim eu estou passando o caminho dele por um parametro do relatorio principal, o que é estranho pois o sub relatorio esta no mesmo diretorio que o relatorio principal (/meuContexto/relatorios) e este é encontrado na pasta do contexto normalmente. E para o subrelatorio eu estou tendo de setar o caminho absoluto da pasta que contem o arquivo.

Obrigado pela ajuda!

[]'s

________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Humm... Estranho.
Se o sub está na mesma pasta em que o relatório principal, você só precisa colocar o nome do Jasper no parâmetro (no próprio iReport mesmo). Dá uma olhada se ele muda no XML isso também... Eu fiz algumas vezes e passei algumas horas até descobrir que não estava alterando no xml.

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

No ireport eu utilizo um parametro que passa o caminho do subrelatorio, acho q é o padrão do ireport quando vc cria um subrelatorio, pois ele mesmo criou esse parametro pra mim quando criei o subrelatorio. Quanto ao "xml" que vc se refere seria o ".jrxml" ???

Mais uma vez obrigado pela ajuda!

[]'s

________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Sim, o jrxml.
Se todos estiver em /home/user/app/reports (todos os jaspers, eu quero dizer), no seu relatório só deve ter o nome dos subrelatórios. Mais nada. Não precisa de parâmetro, nem nada. Você só precisa usar parâmetros quando os reports estão em lugares diferentes (ou podem mudar... quando você coloca num ear, por exemplo).

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
lazaropj
JavaGuru
[Avatar]

Membro desde: 29/10/2009 11:05:04
Mensagens: 244
Localização: Brasilia - DF
Offline

Revivendo novamente...

No relatorio principal, vc falou q colocou FIELDS né... Mas assim, vc alimentou esse fields como ?
Pq se vc não colocar uma fonte de dado, ele não compila
ele fala assim:
Field not found: "nomeDoField"

Tentei trocar. No lugar de TextField, eu coloquei Parameters. Assim no Ireport ele compila, mas o relatorio fica todo em branco quando executo a aplicação.

Tem com vc me ajudar?

abraço.


Lazaro Jr.

Java4all
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Olá Lazaro, os Fields são realmente necessarios pois eles representam a sua coleção que estiver sendo passada ao relatorio em tempo de execução, talves o que possa estar acontecendo é vc estar inserindo um field não declarado no seu relatorio, ou mesmo se for em tempo de execução em sua coleção o objeto que estiver sendo passado deve possuir uma correspondencia entre cada field e uma propriedade de seu objeto.

[]'s

________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
lazaropj
JavaGuru
[Avatar]

Membro desde: 29/10/2009 11:05:04
Mensagens: 244
Localização: Brasilia - DF
Offline

Mas velho... se eu colocar o field na mão, o Ireport não gera o .jasper

E estou passo o .jasper pro aplicação...

Devo então passar o .jrxml e mandar ele compilar o jasper??

daí ele vai pegar o field e atriduir ao campo nome da minha classe..

será q é isso ?

Lazaro Jr.

Java4all
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Lazaro, vc esta utilizando o ireport certo?
Voce consegue compilar e rodar a partir de sua aplicação sem adicionar o subrelatorio? Isto usando o Field?

Vamos tentar eliminar as coisas aos poucos...rsrsrs


[]'s

________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
lazaropj
JavaGuru
[Avatar]

Membro desde: 29/10/2009 11:05:04
Mensagens: 244
Localização: Brasilia - DF
Offline

Não consigo, pois passo para a minha aplicação o .jasper

E se eu coloco no Ireport, os fields e tento compilar para gerar o jasper ele fala q o field não foi encontrado...

=/

Lazaro Jr.

Java4all
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team