Não consigo carregar o SubRelatório pela aplicação

Gente, não estou conseguindo resolver esse problema. Sempre da o erro:

no relatório, a expressão do subreport esta $P{SUBREPORT_DIR} + "CapaRCDA_subreport1.jasper"

mesmo assim, ele não encontra e eles estão no mesmo diretório…

Me ajudem, por favor… T-T

Boa tarde ElesisLink…

Vocês está passando algum parametro para o $P{SUBREPORT_DIR} de sua aplicação?

Se não está, qual o valor Default que vc está setando?

att,
Ávila

Se estiver vazio tenta coloca uma / antes do nome do sub…

$P{SUBREPORT_DIR} + “/CapaRCDA_subreport1.jasper”

ou

$P{SUBREPORT_DIR} + “\CapaRCDA_subreport1.jasper”

Você esta falando disso

que esta no XML ou disso:

que foi gerado pelo IReport?

Eu não passo parâmetro para o relatório

Falo o que foi gerado pelo IReport…

No campo Subreport Expression onde vc passa $P{SUBREPORT_DIR} + “CapaRCDA_subreport1.jasper”… tenta colocar 2 barras no inicio da String com o nome do subrelatorio…
Ficaria assim:

$P{SUBREPORT_DIR} + "\\CapaRCDA_subreport1.jasper"

deixa o valor do PARAMETRO SUBREPORT_DIR vazio ou com “”

o XML ele ficaria assim:

<defaultValueExpression ><![CDATA[""]]></defaultValueExpression>  

Ávila

Cara, eu fiz do jeitinho que você falou, mas o erro persiste.

Seu eu removo os subrelatórios do Relatório principal, ele executa normalmente pela aplicação JAVA.

É só colocá-los que o erro ocorre, por favor alguém me ajuda, estou entrando em desespero… :cry:

No seu subreport (CapaRCDA_subreport1.jasper) você executa alguma query?

se não executa, tenta rodar algo do tipo…

SELECT SYSDATE FROM DUAL

sql para ORACLE

e tenta rodar o relatório principal com o subrelatório…

att,
Ávila

Sim, o subrelatório possui uma query, cujo parametro vem do relatório principal.

Você comentou que se remover os subrelatorios do principal funciona na aplicação…
Se você remover somente este que parece não estar encontrando deixando os outros subs…funciona?

Ávila

É que possui 2 subRelatórios… se remover um, da erro no outro, o mesmo erro…

Agora, se removo todos os sub, ele executa…

Sei que parece meio óbvio o que vou perguntar, mas tu colocou os subs .jasper na tua aplicação?
pois umas versões mais antigas do IReport ele compilava os .jasper dentro da pasta onde fica instalado o IReport…mesmo os arquivos jrxml estando dentro da aplicação…

outro teste q podes estar fazendo seria criar um sub simples, com um texto estático e uma query qualquer e tentar estar rodando para ver se vai dar certo de abrir subs no seu relatorio principal…

Ávila

os .jaspers estão na pasta dos relatórios, eu estou usando a versão 3.0.0. Os compilados vão para a pasta dos relatórios…

E se passar o caminho completo do dos relatórios executa?

tipo, $P{SUBREPORT_DIR}: “C:…\relatorios”

Ávila

Eu não tentei isso ainda, como eu faço?

Copie o caminho completo no Windows Explorer no casa de utilizar windows…e cole como default no $P{SUBREPORT_DIR}
mas coloque 2 contra barras em cada contra barra

ex.:

C:\\Users\\Fulano\\workspace\\sistemas\\WebContent\\relatorios\\

e no subreport tu aponta assim:

$P{SUBREPORT_DIR} + "CapaRCDA_subreport1.jasper"  

Ávila

Cara eu uso Linux, e não estou conseguindo colocar o caminho. Quando eu o coloco, ele da um erro no relatório, ainda no IReport …

Eu to setando assim:

HashMap parametermap = new HashMap(); parametermap.put("SUBREPORT_DIR","\\home\\usuario\\workspace\\Relatórios\\relatorios\\");

Ta dando mais trabalho para funcionar do que fazê-lo…

acho que o caminho no linux ficaria com a barra normal /

HashMap parametermap = new HashMap();  
parametermap.put("SUBREPORT_DIR","/home/usuario/workspace/Relatórios/relatorios/");

mas dá uma olhada neste link que pode ajudar…

http://www.guj.com.br/java/276641-resolvido-chamar-sub-relatorio-em-classe-java

Ávila

Vamos caçar esse problema então…

  • Cara, você tem um “sub relatório” que chame outro “sub relatório” ou é só o principal e o sub mesmo?
  • Tentou com / ao invés de \?
  • Tira um pouco a chamada desse sub relatório que ta dando problema e coloca um field do relatório principal mostrando o valor do parâmetro “SUBREPORT_DIR”

Então, man, desculpa ficar te enchendo a paciência toda hora, mas ainda não esta 100% resolvido.

Em relação ao Linux, dei uma paradinha, para ver se conseguia resolver o problema no Windows 1º.

Eu coloquei os caminhos, do jeito que vc falou e, depois de muito sofrimento e exaustão, consegui mostrar o relatório,

no entanto, um novo erro aparece:

O que será isso agora ?

<edit> Não, eu tenho só um principal, que chama outros 2 subrelatórios;
com / ao invés de || parece que funcionou no LINUX, pois eu consegui chamar o relatório no Linux, mas deu o mesmo problema do WIndows agora

O Sub não aparece, mas no Linux não escreveu nada…

Quanto a esse erro, algum lugar não ta recebendo conexão, provavelmente esse tal de subreport1…
Seguinte, abre teu relatório principal no IReport e clica do sub relatório, nas propriedades dele, vamos conferir 2 opções:
“Connection type”: Use a connection expression
"Connection Expression": $P{REPORT_CONNECTION}

Isso deve funcionar :smiley: