JasperReport + IReport

Boa Tarde, Sou iniciante em Java e estou tentando gerar um relatório. Pesquisei alguns código na web e correu tudo bem consegui gerar o arquivo PDF a partir de um jrprint ou até mesmo um PDF a partir de um .Jasper. O
problema é que o arquivo gerado é de 1k ou seja ele não preenche os dados. Alguem poderia ajudar

desde já

André Luiz

Isso acontecia comigo quando, na geração do PDF, alguma exceção era lançada, seja de banco (SQLException) ou de arquivos (IOException).

Outro motivo, por incrível que pareça, era o resultado do banco vir vazio (a consulta não retornava nada!).

Olá

Verifique se não é lançada nenhuma exception.
Se tiver poste aqui para gente analisar.

Bem, eu mando o aplicativo editar no console os dados do banco de dados, tudo está dentro de um try, e a conexão também está ok o código java também está certo, so que os arquivos jrprint e pdf ficam vazios

obs o código

try
ResultSet con = script.selCandidatoCartao(insc.getSeqConcurso(),insc.getCodCargo(),insc.getNumCpf());
String path = getServlet().getServletContext().getRealPath(“Relatorios”);//“webapps/InsWeb/Relatorios/”;
JRResultSetDataSource jrs = new JRResultSetDataSource(con);
HashMap parameters = new HashMap();

//////////////////////////////////////
System.out.println(“AQUI 1” + con.getString(“nom_candidato”));

//AQUI ELE CRIA O RELATORIO - JasperPrint impressao =
/* Preenche o relatório com os dados. Gera o arquivo cartaodeConfirmacao.jrprint */
JasperFillManager.fillReportToFile(path.concat("\cartaodeConfirmacao.jasper"), parameters, jrs);

           //System.out.println("AQUI 2");               
           /* Exporta para o formato PDF */
          JasperExportManager.exportReportToPdfFile(path.concat("\\cartaodeConfirmacao.jrprint"));


       } catch (Exception e) 
       {
try {
 ResultSet con = script.selCandidatoCartao(insc.getSeqConcurso(),insc.getCodCargo(),insc.getNumCpf()); 
 String path = getServlet().getServletContext().getRealPath("Relatorios");//"webapps/InsWeb/Relatorios/"; 
 JRResultSetDataSource jrs = new JRResultSetDataSource(con); 
 HashMap parameters = new HashMap(); 

 ////////////////////////////////////// 
 System.out.println("AQUI 1" + con.getString("nom_candidato")); 

 //AQUI ELE CRIA O RELATORIO - JasperPrint impressao = 
 /* Preenche o relatório com os dados. Gera o arquivo cartaodeConfirmacao.jrprint */ 
 JasperFillManager.fillReportToFile(path.concat("\\cartaodeConfirmacao.jasper"), parameters, jrs); 

 //System.out.println("AQUI 2"); 
 /* Exporta para o formato PDF */ 
 JasperExportManager.exportReportToPdfFile(path.concat("\\cartaodeConfirmacao.jrprint")); 

} 
catch (Exception e) 
{ 
 // você trata as exceções (erros) AQUI
 e.printStackTrace();
}

Teste agora e ficamos aguardando!

Bem coloquei o código e.printStackTrace(); Só que ele não entra neste bloco, já que o sintaticamente está tudo ok. e os arquivos são gerados, só que vazios.

cartaodeConfirmacao.jrprint 1k
cartaodeConfirmacao.pdf 1k

18/09/2007 14:29:59 org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
18/09/2007 14:29:59 org.apache.catalina.startup.Catalina start
INFO: Server startup in 3034 ms
18/09/2007 14:30:25 org.apache.struts.tiles.TilesRequestProcessor initDefinitionsMapping
INFO: Tiles definition factory found for request processor ‘’.
AQUI 1 LUCIANO CANDIDATO TESTE
AQUI 4

Uma pequena observação antes: sintaxe correta não significa que o o programa será executado corretamente, pois exceções podem ocorrer. Para isso existe o bloco try/catch/finally.

Dando continuidade, não há exceções lançadas, mas há algo estranho com a variável path, observe:

//AQUI ELE CRIA O RELATORIO - JasperPrint impressao =   
/* Preenche o relatório com os dados. Gera o arquivo cartaodeConfirmacao.jrprint */  
JasperFillManager.fillReportToFile(path.concat("\\cartaodeConfirmacao.jasper"), parameters, jrs);   

/*
 * path tem "//webapps/InsWeb/Relatorios/\\cartaodeConfirmacao.jasper"
 */
 System.out.println( path );

//System.out.println("AQUI 2");   
/* Exporta para o formato PDF */  
JasperExportManager.exportReportToPdfFile(path.concat("\\cartaodeConfirmacao.jrprint"));   

/*
 * path tem "//webapps/InsWeb/Relatorios/\\cartaodeConfirmacao.jasper\\cartaodeConfirmacao.jrprint"
 */
 System.out.println( path );

Teste agora.

O path está ok, mandei imprimir no console. O que é difícil de entender é que mesmo dentro de try/catch não há retorno de erro. Segue abaixo o que mandei imprimir no Console.

AQUI 1 LUCIANO TESTE CANDIDATO
D:\JAVA\Tomcat 5.5\webapps\InsWeb\Relatorios - PATH
AQUI 4

Opa, beleza?Aonde você faz a busca (filtragem) dos dados?O arquivo pdf, está gerando normalmente?

Bem a busca eu executo dentro do meu servelt os arquivos jrprint e pdf são gerados, contudo sem qualquer informação dentro. Observe o código:

try
ResultSet con = script.selCandidatoCartao(insc.getSeqConcurso(),insc.getCodCargo(),insc.getNumCpf());
String path = getServlet().getServletContext().getRealPath(“Relatorios”);//“webapps/InsWeb/Relatorios/”;
JRResultSetDataSource jrs = new JRResultSetDataSource(con);
HashMap parameters = new HashMap();

System.out.println(“AQUI 1” + con.getString(“nom_candidato”));

//AQUI ELE CRIA O RELATORIO - JasperPrint impressao =
/* Preenche o relatório com os dados. Gera o arquivo cartaodeConfirmacao.jrprint */
JasperFillManager.fillReportToFile(path.concat("\cartaodeConfirmacao.jasper"), parameters, jrs);

//System.out.println(“AQUI 2”);
/* Exporta para o formato PDF */
JasperExportManager.exportReportToPdfFile(path.concat("\cartaodeConfirmacao.jrprint"));

} catch (Exception e)
{

[quote=andrelrm]Bem a busca eu executo dentro do meu servelt os arquivos jrprint e pdf são gerados, contudo sem qualquer informação dentro. Observe o código:

try
ResultSet con = script.selCandidatoCartao(insc.getSeqConcurso(),insc.getCodCargo(),insc.getNumCpf());

{[/quote]
Seria nesta parte do código, onde você filtra os seus dados?

Dê uma olhada neste links aqui:
http://www.ensode.net/jasperreports_pdf_send_to_browser.html
http://www.furutani.eti.br/tutoriais/Tutorial_Sub_Relatorio_ArrayList.pdf
Talvez você possar tirar proveito do conteúdo!

eu estou tendo esse mesmo problema,

já pesquisei muito a manhã inteira e nada,

c alguem conseguir solucionar este problema post aqui,

vou continuar pesquisando…

Olá pessoal, ainda estou com o mesmo problema. retornei so para lembrar.

Esta acontecendo que eu tenho um arquivo .jasper gerado e compilado, gero o jrprint e o pdf, mais os dois estão vazios, apenas com 1k. A query de busca está ok, não exception. Resumindo. Estou perdido.

Alguem poderia ajudar?

André Luiz

Hmm…

Primeiro aconselho a vc colocar um tratamento ai no catch… assim, poderá ver o que ocorreu… nem que seja um printStackTrace()…

Mas como vc disse… n tem “erros”… ao menos de sintaxe e execução… ^^

Acredito que vc tenha testado a execução do relatório diretono iReport… passando os parâmentros no mão… e deve ter funcionado perfeitamente… se não fez isso, demoro pra fazer e descartar a possibilidade de ser algo do jasper…

Como a geração do PDF ta dependendo no jrprint… o problema esta antes de gerar o PDF…

eu diria… que esta na linha:

JasperFillManager.fillReportToFile(path.concat("\\cartaodeConfirmacao.jasper"), parameters, jrs);

Não manjo muito desse JasperFillManager… mas creio que de para deduzir algumas coisas…

Vc esta usando o metodo:
JasperFillManager.fillReportToFile(sourceFileName, parameters, dataSource);

Mas esse dataSource… n saquei muito bem… ele passa exatamente o que ??
Me parece ser um “ResultSet” com os dados para gerar o arquivo… mas esse cara nao tem nada… ao menos entre a declaração e essa linha… n existe nada, a nao ser atrelar esse cara com o Connection… =/

Bom… acredito que vc tenha feito o relatório no padrão… ou seja, a Query ta compilada bunitinho dentro do jasper…

Então… eu tentaria usar o seguinte no lugar:
JasperFillManager.fillReportToFile(sourceFileName, parameters, connection);

E passaria o connection, e deixa o jasper executar a consulta por si mesmo…

Ou posso estar viajando de mais… e nada aparece porque vc simplesmente passa um HashMap de paramentros em branco… e como n tem parâmetro, nada aparece no relatório… e vc poderia resolver isso, simplesmente colocando um parâmetro nele… ^^

Olá

"\\cartaodeConfirmacao.jasper"

Qual é o motivo de voce usar \ ?

Vou seguir o seu conselho. Já estava suspeitando que talvez seja este o problema. Mandarei notícias.

André Luiz

O \ é para que a concatenação seja correta.

Exemplo

   webapps\insweb\relatorioscartaodeconfirmacao.jasper  se eu não usar o \\ fica assim.  Usando

fica na forma correta

   webapps\insweb\relatorios \ cartaodeconfirmacao.jasper