iReport - Diretório dos subreports

6 respostas
insonix

Boa tarde.

Galera, estou com um probleminha no iReport.
Quando tenho um subReport, tenho que definir o diretório dele.
Gostaria que ele pegasse automaticamente, o mesmo path que está o relatório pai que estou executando.
Exemplo:

Tenho o relatório estatisticas.jasper e tenho o estatisticas_sub01.jasper, que está no mesmo diretório.

Eu fiz da seguinte maneira.

  • Fui nas propriedades do subreport, em SubReport (Other).
  • Em Subreport Expression, tirei o $P{SUBREPORT_DIR} e deixei somente “estatisticas_sub01.jasper”.

Quando rodo o relatório pai, ocorre o erro:

Error filling print… Could not load object from location : estatisticas_subreport0.jasper
net.sf.jasperreports.engine.JRException: Could not load object from location : estatisticas_sub01.jasper at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLoader.java:266)

Vocês entenderam o problema?
Eu queria deixar todos relatórios inclusive os subrelatórios, na mesma pasta, para meus relatórios ficarem independentes de onde estão (diretórios).

Obrigado des de já.

Att. Diego.

6 Respostas

B

Cara,

Você pode por exemplo passar isto por parâmatro para ele, por exmplo.

HashMap<String, Object> params = new HashMap<String, Object>();
params.put(“SUBREPORT_DIR”, pathJasper+"\WEB-INF\rel\");

Abraço

insonix

Quero evitar isto.
Não tem solução?

Parece uma coisa tão simples, buscar do diretório onde se encontra o relatório…

[]s

B

Tente aqui:

http://ireport.sourceforge.net/cap7.html#7.2

Acredito que vc teria que pegar e me parece que é assim:

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/outrapasta/outrapasta/etc")

Onde me parece que ele considera o subDataSource como a raiz do arquivo.

Dá uma lida lá pra ver.

Adriano_Crespo

Eu costumo fazer assim:

String pathRel = getServlet().getServletContext().getRealPath("/WEB-INF/classes/xxx/xxx/etc.jasper"); String pathSubRel = getServlet().getServletContext().getRealPath("/WEB-INF/classes/xxx/xxx/etc_subrel.jasper");
Eu uso o pathRel para abrir o relatorio principal e passo o pathSubRel com parametro… Sempre funcionou na boa…

Mackrophus

Olá Pessoal…

Eu vi que o post é meio antigo, mas, eu sou novo em java e precisa de uma ajuda.

Eu construi uma aplicação em JSF chamando um relatorio que desenhei com o Ireport, esse relatorio tem um subrelatorio que não sei como fazer para incluir o parametro que voces descreveram no post.

Voces poderiam me ajudar?

Muito obrigado.

B

Para passar parametros de um relatorio “RAIZ” par ao sub relatoio basta vc dar dois cliques encima “sub relatorio” e na 3 aba vc terá como adicionar parametros.

  • Parametro será o nome do parametro utilizado no outro relatorio --> codigo_pessoa
  • Expressão é o que vc está passando da “RAIZ” --> $F{cod_pessoa}
Criado 24 de abril de 2008
Ultima resposta 3 de jul. de 2009
Respostas 6
Participantes 4