iReport - Diretório dos subreports

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.

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

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

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.

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…

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.

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}