SubReport nao carrega

Olá pessoal desenhei aqui um Relatorio com um subrelatorio carregado como padrao no cabeçalho.
Rodando o reltaorio pelo Ireport 471 fica td uma lindeza só.
Rodando pelo java, nao carrega o SubReport. Alguem pode ter uma ideia de pq isso acontece?

Qual banco vc está usando? Acontece um problema similar no Firebird.
Que é resolvido adicionando “?defaultResultSetHoldable=True” na conexao com o banco de dados.

Ficaria mais ou menos assim:
jdbc:firebirdsql://localhost/d:/BANCO.FDB?defaultResultSetHoldable=True

[quote=gilluan]Qual banco vc está usando? Acontece um problema similar no Firebird.
Que é resolvido adicionando “?defaultResultSetHoldable=True” na conexao com o banco de dados.

Ficaria mais ou menos assim:
jdbc:firebirdsql://localhost/d:/BANCO.FDB?defaultResultSetHoldable=True
[/quote]

Postgresql

Blz, já com o Postgresql não tive problema nenhum…

Flw

[quote=gilluan]Blz, já com o Postgresql não tive problema nenhum…

Flw[/quote]
Desclpa, mas eu nao consegui ver a relacao entre a solucao oferecida por vc e o fato do subreport nao sser carregado, poderia me explicar?

[quote=gilluan]Blz, já com o Postgresql não tive problema nenhum…

Flw[/quote]
Eu nao to usando ResultSet nos relatorios

Infelizmente não sei te explicar o motivo desse erro. Encontrei essa postagem em um fórum depois de várias tentativas sem sucesso.

Poste o jrxml que vc está usando e a classe se puder.

Verifique o caminho do $P{SUBREPORT_DIR}, pode ser que ele não esteja encontrando o arquivo dentro do java pq não acha o caminho dele

[quote=ismael.costa]Poste o jrxml que vc está usando e a classe se puder.

Verifique o caminho do $P{SUBREPORT_DIR}, pode ser que ele não esteja encontrando o arquivo dentro do java pq não acha o caminho dele[/quote]

Infelizmente nao posso ostar todo o xml aqui.
mas o subreportDir é:

<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> <defaultValueExpression><![CDATA["/home/vinny/workspace/report/rh/"]]></defaultValueExpression> </parameter>

é o mesmo caminho do report

Tente buscar o caminho do seu relatório sempre pelo contexto da aplicação, nunca pelo caminho físico

“/home/vinny/workspace/report/rh/”

Pelo que eu entendi esse caminho é do seu workspace, não vai ser achado em produção.

Você pode enviar o seu $P{SUBREPORT_DIR} via código java,

params.put(“SUBREPORT_DIR”, “caminhoContextoAplicacao”);

Isso vai garantir que o report seja encontrado :wink:

Mais uma coisa, o preview do seu Ireport sempre vai achar o caminho dos seus subrelatórios pq ele não se importa se é o caminho físico, e até prefere,
você que tem que forçar ele a procurar dentro do servidor qdo for para produção, que deve ser o seu caso :wink:

[quote=ismael.costa]Tente buscar o caminho do seu relatório sempre pelo contexto da aplicação, nunca pelo caminho físico

“/home/vinny/workspace/report/rh/”

Pelo que eu entendi esse caminho é do seu workspace, não vai ser achado em produção.

Você pode enviar o seu $P{SUBREPORT_DIR} via código java,

params.put(“SUBREPORT_DIR”, “caminhoContextoAplicacao”);

Isso vai garantir que o report seja encontrado ;)[/quote]

Isso vc diz ppra colocar dentro da classe java ou no report?

no report o parametro esta da seguinte maneira:

        <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
		<defaultValueExpression><![CDATA["/home/vinny/workspace/report/rh/"]]></defaultValueExpression>
	</parameter>

Dentro da classe java, ao gerar um relatório com Ireports, vc pode passar um HashMap para ele com parâmetros.

HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put(“SUBREPORT_DIR”,getPathJasper());

nesse caso eu passo o caminho onde está o subrelatório.

//aqui é a lista de objetos que eu to passando pro relatório, pq eu uso collection, não sql puro
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(lista);

//o importante vem aqui, ao compilar o relatório pelo jasper eu passo os parâmetros que eu defini
JasperPrint jasperPrint = JasperFillManager.fillReport(relatorioJasper, hashMap ,ds);

Já estou usando o defaultResultSetHoldable=True no entanto ainda ocorre um erro estranho.

quando executo apenas o relatório MESTRE lista normalmente, quando incluo o subreport com os detalhes o relatório é gerado e apenas aparece o primeiro registro do MESTRE e seus DETALHES e para por ai. Não sai mais nenhum MESTRE ou DETALHES mesmo tendo mais dados no banco.

Utilizo o firebird 2.5 e ireport 4.8.0, desde já agradeço qualquer ajuda.

Bom dia

Se não me engano, nessa linha:

 <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">  

Para o sub-report deveria ser assim a declaração de class :

 <parameter name="SUBREPORT_DIR" class="java.io.File" isForPrompting="false">  

Att.