Sub-relatório imprimindo em branco (JasperReport/Java/Jsp/Oracle/Eclipse/Tomcat) [RESOLVIDO]

5 respostas
wanteixeira

Estou com problema para imprimir um subrelatorio.
Eu li os tópicos referentes a este assunto mas nao resolveu!

No ambiente do Japser, no VIWER, mostra perfeitamente bem,

Ao passar para a aplicação, o subrelatório sai branco.

Me parece que os dados do sub estão aparecendo em branco, visto que,
ao mudar o código no sql, a impressão sai com tamanhos diferentes, ou
seja está trazendo linhas em branco.

Já mudei a fonte de cor, já sobrepus o sub para cima , mas NADA!

O SQL está trazendo normalmente, tanto no método java quanto no visualizador
do jasper. Porém, ao chamar o relatório dentro da a aplicação, SOMENTE o subrelatório não aparece.

Testei com a última versão do software JASPER e nada também

Chamei um benzedor AFRICANO ZULU e nada também

Alguém sabe me informar o que está acontecendo?

Meu ambiente/ferramentas de trabalho é:
/JASPERREPORT 2.0.4
/JAVA6
/ORACLE
/ECLIPSE3
/TOMCAT5

Os relatórios compilados ficam em :
C:\Projetos\sgi_dividido\transporte\src\main\web\WEB-INF\classes\relatorios\transporte

As telas de configuração dentro do jasper são:
tela_01_relatorio_principal.jpg
tela_02_relatorio_principal_conexao_com_subrelatorio.jpg
tela_03_subrelatorio.jpg

Segue o código java - método que gera o relatorio:

public void gerarRelatorio() throws ValidacaoException {
      GerenteTransporte gerenteTransporte = getFabricaGerente().getGerenteTransporte();
      try {
         
         ResultSet resultado = null;
         String pathRelCondutores;
   
         resultado = gerenteTransporte.obterRelatorioAutorizacaoTrafegoDeslocamento(getAutorizacaoTrafegoDeslocamento());
         
         if(resultado == null){ 
            try {
               if (resultado.next())
                  throw new ApplicationException("A pesquisa não retornou resultados.");
            } catch (SQLException e) {
               e.printStackTrace();
            }
         }
         
         // gerar itinterário ex: PALMAS-TO / ALVORADA-TO / ARAGUAÍNA-TO
         String itinerario = new String();
         Municipio municipioTemp = new Municipio();
         for (int i = 0; i < getAutorizacaoTrafegoDeslocamento().getMunicipios().size(); i++) {
            municipioTemp = (Municipio) getAutorizacaoTrafegoDeslocamento().getMunicipios().get(i);
            if (i == 0)
               itinerario = municipioTemp.getNome()+ "-" + municipioTemp.getUnidadeFederal().getSigla();
            else
               itinerario += " --> " + municipioTemp.getNome()+ "-" + municipioTemp.getUnidadeFederal().getSigla();
         }
         
         pathRelatorio     = "/relatorios/transporte/";   
         pathRelCondutores = pathRelatorio + "subCondutores.jasper";
         
         
         HashMap map = new HashMap();
         map.put("ITINERARIO", itinerario);
         map.put("PATH_REL_CONDUTORES", pathRelCondutores);
         
         
         setPathRelatorio(ReportHelper.gerarRelatorio((ResultSet)resultado, pathRelatorio + "AutorizacaoDeslocamentoComSub.jasper", map));
         
         setAbrirRelatorio(Boolean.TRUE);

      } catch (ApplicationException e) {
         addMessage(ERROR_MESSAGE, e.getMessage());
         e.printStackTrace();
         return;
      }

   }



5 Respostas

ViniGodoy

Olá, por favor, não poste títulos só com letras maiúsculas.

wanteixeira

Desculpe-me , seu moderador

Já consertei…

Estou aproveitando e enviando os PDFs que são gerados da seguinte forma

AutorizacaoDeslocamentoComSub.pdf - é o relatório gerado no jasper, ou seja tudo funcionando bem

na_aplicacao_01.pdf - gerado na aplicação

furutani

tem certeza que está indo dados para o subrelatório?

wanteixeira

FURUTANI,

ao debugar no eclipse, percebo que os dados aparecem normalmente no ResulSet [resultado] o qual é passado como parâmetro para o relatório pai. (AutorizacaoDeslocamentoComSub.jasper).

o SQL do subrelatório (subCondutores.jasper) é idêntico ao pai e recebe um parametro [ID] que por sua vez recebe o FIELD [ID] da listagem da tabela do pai.

pelo menos até chegar no relatório pai os dados chegam normalmente,

o sub aparece em branco como se as linhas estivessem brancas, pois é apresentado espaços na BANDA do tamanho das linhas, porém sem dados… conforme os PDFs que mandei acima.

o que você acha?

wanteixeira

decidi mudar totalmente o método para criar o relatorio

Não consegui gerar utilizando SQL

Então mudei para objetos e deu certo!

// RELATORIO USANDO OBJETO	
	public void gerarRelatorio() throws ApplicationException {

		// pega a autorização
		List<AutorizacaoTrafegoDeslocamento> autorizacaoDescolcamentoList = new ArrayList<AutorizacaoTrafegoDeslocamento>();
		autorizacaoDescolcamentoList.add(getAutorizacaoTrafegoDeslocamento());

		// gerar itinterário ex: PALMAS-TO / ALVORADA-TO / ARAGUAÍNA-TO
		String itinerario = new String();
		Municipio municipioTemp = new Municipio();

		for (int i = 0; i < getAutorizacaoTrafegoDeslocamento().getMunicipios().size(); i++) {
			municipioTemp = (Municipio) getAutorizacaoTrafegoDeslocamento().getMunicipios().get(i);
			if (i == 0)
				itinerario = municipioTemp.getNome()+ "-" + municipioTemp.getUnidadeFederal().getSigla();
			else
				itinerario += " / " + municipioTemp.getNome()+ "-" + municipioTemp.getUnidadeFederal().getSigla();
		}

		HashMap map = new HashMap();
		map.put("ITINERARIO", itinerario);

		
		/* ABRIR RELATÓRIO */
		String base = "/relatorios/transporte/";
		String[] reportSources = new String[2];
		reportSources[0] = base + "AutorizacaoDeslocamento.jrxml";
		reportSources[1] = base + "itemAutorizacaoDeslocamento.jrxml";

		setPathRelatorio(ReportHelper.gerarRelatorio(autorizacaoDescolcamentoList,
				"/relatorios/transporte/AutorizacaoDeslocamento.jasper", map, reportSources));

		setAbrirRelatorio(Boolean.TRUE);
	}
Criado 16 de novembro de 2009
Ultima resposta 19 de nov. de 2009
Respostas 5
Participantes 3