Como localizar o subReport (JasperReport) subReport em Branco

5 respostas
Deluxe

Pessoal

eu tenho um relatorio que possui um subReport
está funcionando perfeitamente..
agora quando fui gerar pelo codigo java..
vi um problema, onde eu passo o arquivo jasper do subReport ?
ele é passado por parametro ?

public String imprimirFatura(HttpServletRequest request, HttpServletResponse response, Fatura fatura)throws Exception {
		
	     Map params = new HashMap();
	     OutputStream ops = null;
	     String valorFinal = "";
	     String jasper = "";
	     boolean tipo = true;


	     Fatura dadosFatura = imprimirFaturaFacade.buscarDadosFatura(fatura);

	     ResultSet rs = imprimirFaturaFacade.gerarFatura(dadosFatura);	

	     jasper  = request.getContextPath() + "/reports/faturaSIAFInao.jasper";
	    
	     JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);    

	     String host = "http://" + request.getServerName() + ":"+ request.getServerPort();    
	     
	     URL jasperURL = new URL(host + jasper);
	     
	     try {
	            /**
	             * Informo ao browser que a pagina que sera retornada e um arquivo
	             * pdf
	             */
	            response.setContentType("application/pdf");
	            /**
	             * Gero o relatorio e armazeno o stream retornado num array de bytes
	             */
	            byte[] bytes = JasperRunManager.runReportToPdf(jasperURL
	                    .openStream(), params, jrRS);

	            /**
	             * Pego uma referencia do outputStream e gravo nele meu array de
	             * bytes
	             */
	            if (bytes != null) {
	                ops = response.getOutputStream();
	                ops.write(bytes);
	            }

	        } catch (JRException ex) {
	            ex.printStackTrace();
	        } finally {
	            if (ops != null) {
	                ops.flush();
	                ops.close();
	            }
	        } 
	   	 return "faturaPreenchida";
	 }

5 Respostas

Mero_Aprendiz

Deluxe:
Pessoal
eu tenho um relatorio que possui um subReport
está funcionando perfeitamente…
agora quando fui gerar pelo codigo java…
vi um problema, onde eu passo o arquivo jasper do subReport ?
ele é passado por parametro ?

Olá Deluxe.
Uma solução simples é passar o caminho do subReport por parametro.
No iReport, nas propriedades do sub-relatório, informe que a classe de Expressão do sub-relatório como String e na expressão, passe o parametro que contém o caminho do subReport.
Assim é bem simples, sem complicação, e funciona. :wink:

[]'s
JL

Deluxe

entao cara
rodando o relatorio pelo Ireport ele funciona de boa
mas quando coloco la no codigo java…
fiz assim pra passar o parametro

String web = request.getSession().getServletContext().getRealPath( "/reports/");  
params.put("SUBREPORT_DIR", web);

onde la no meu subRelatorio ja está

$P{SUBREPORT_DIR} + "/faturaSIAFInao_subreport0.jasper"

até ai blz…
quando mando gerar, nao da erro nenhum, gera de boa…
mas onde é a parte do subReport ele sai em branco…

pq sera?

marthian_2

OPs… tu consegiu resolver…

O que tou em dúvida não e nem como passar o subrelatorio pro relatório e sim em como preencher os campos do sub antes de envia-lo…

Kleber-rr

Eae Deluxe, conseguiu resolver??

R

Pessoal,

percebi que o problema não estava no carregamento do relatório, e sim na passagem da Conexão com o banco, se você for nas opções do subreport e colocar no campo When No Data: All Sections, No Detail, o subrelatório mostra o cabeçalho, a partir disso percebi que o erro era na exibição dos dados. O Ireport coloca automaticamente que o subreport utilize a conexão do relatório master, contudo no meu caso e no citado acima estamos passando o ResultSet pronto e nenhuma conexão, o que fiz foi criar um parâmetro conexaoaux, colocar o subreport para apontar a conexão para esse parâmetro e passar a conexão com o banco para o relatório principal.

Dessa forma funcionou show de bola!

Espero estar ajudando, porque pesquisei muito e não achei ninguém informando que resolveu o problema, apenas a dica de colocar para exibir o relatório mesmo sem dados, o que me abriu a mente para analisar as conexões.

Criado 17 de junho de 2009
Ultima resposta 24 de ago. de 2011
Respostas 5
Participantes 5