Ireport [RESOLVIDO]

7 respostas
MarcosOLIVEIRA

Galera to com um problema. Na hora que faço o fill manager preencher o relatorio
dá Null Pointer Excpt.

me parece que ele nao consegue fazer o fill report

java.lang.NullPointerException
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)
        at relatorios.Files.relCaixa.<init>(relCaixa.java:33)
        at relatorios.Files.relCaixa.main(relCaixa.java:52)
package relatorios.Files;



import javax.swing.JOptionPane;

import net.sf.jasperreports.view.JasperViewer;
import utilitarios.Conexao;


import java.util.*;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;

public class relCaixa {
  



public relCaixa(){

    Conexao conexao = new Conexao();
    conexao.conecta();

    conexao.executeSQL("Select * from masterprint.caixa t1 JOIN masterprint.movimentacao_caixa t2 ON (t1.id = t2.idcaixa) where t1.datas = '28/06/2010';");

    HashMap m = new HashMap();

    try{
            
            
            
            JRResultSetDataSource jrRS = new JRResultSetDataSource (conexao.resultset);
          
            JasperPrint jp = JasperFillManager.fillReport("relatorios\\Caixa.jasper", m, jrRS); //linha que para a execuçao do programa
           
           JasperViewer.viewReport(jp, false);

        } catch(JRException erro2){
            erro2.printStackTrace();
            JOptionPane.showMessageDialog(null, "ERRO: "+erro2);

        } catch(Exception erro){
            erro.printStackTrace();
            JOptionPane.showMessageDialog(null, "ERRO: "+erro);
        }


}
 public static void main (String args []){
        new relCaixa();
  }

}

Qualquer ajuda sera muito bem vinda!!!!

7 Respostas

MarcosOLIVEIRA

Alguma ideia ai???

qualquer coisa ja pode ajudar!!

arqueiros

Marcos,

verifica se essa query não está dando problemas…eu já tive erros em query que incluiam o ‘;’(ponto e virgula) no select.

eu mudaria a linha deixando assim

try{
    ResultSet rs = conexao.executeSQL("Select * from masterprint.caixa t1 JOIN masterprint.movimentacao_caixa t2 ON (t1.id =       t2.idcaixa) where t1.datas = '28/06/2010'");  
}catch (SQLException e ){
e.printStackTrace(); 
}

eu não testei a linha acima mas acredito que esteja certo…verifica se volta algun resultado no ResultSet

qualquer coisa posta ae se deu certo ou não e vamos tentando até uma hora funcionar :lol: :lol:

MarcosOLIVEIRA

a query retorna um resultset valido…
valeu pela dica Arqueiros

Já consegui tirar o nullpointerexception. o Problema era que tinha colunas com o mesmo nome nas duas tabelas, tipo: responsavel… ai ele dava esse erro. mudei os nomes e pronto funcionou! Achei ate meio estranho uma vez que o MySql Query Browser nao acusou nada… Deve ser coisa propria do Jasper Reports

Mas para minha surpresa agora estou com outro problema…

quando executo meu Report pelo Ireport aparece tudo certinho todos os campo que deveriam aparecer, tudo certinho!
mas quando executo pela minha classe java ele nao preenche os campos $F{colunas} referentes a cada coluna que escolhi!

alguem conhece esse problema???

L

entaum cara depende de como ta lah no seu .jasper ta usando subrelatorio? em qu ebanda estao estes dados ,xecou se seu resultSet naum ta vazio,de mais detalhes.

MarcosOLIVEIRA

Cara meu .jasper ta assim:

.
.
-----------------------------------------------
Caixa                              $f{datas}     (Title)
-----------------------------------------------
Credito        Debito          Descricao         (Column Header)
------------------------------------------------
$f{credito}   $f{Debito}    $f{Descricao}         (detail)
------------------------------------------------
.
.
.

nao estou usando o subreport.
Coloquei minha query no ireport :
1- “Select datas, descricao, credito, debito from masterprint.caixa , masterprint.movimentacao_caixa ;” para selecionar os campos que uso, e faco o fillManager preencher pelo resultset valido da query:
2- “Select datas, descricao, credito, debito from masterprint.caixa t1 JOIN masterprint.movimentacao_caixa t2 ON (t1.id = t2.idcaixa) where t1.datas = ‘28/06/2010’;”

quando coloco a query 2 no Query Browser aparece o resultset certinho. mas os dados nao vem para o report

MarcosOLIVEIRA

Resolvi!!!

O problema estava que eu estava usando o arquivo compilado .jasper e os campos aparentemente nao estavam sendo preenchidos!

Mudei o codigo para que o a minha classe java compilasse diretamente meu jrxml assim funcionado!

vlw quem pensou ai e me ajudou!

abracos

JasperDesign jasperDesign = JRXmlLoader.load("relatorios\\CaixaTeste.jrxml");
           JRResultSetDataSource jrRS = new JRResultSetDataSource(conexao.resultset);
           JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
         
           JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, m, jrRS);
           JasperViewer.viewReport(jasperPrint);
M
MarcosOLIVEIRA:
Resolvi!!!

O problema estava que eu estava usando o arquivo compilado .jasper e os campos aparentemente nao estavam sendo preenchidos!

Mudei o codigo para que o a minha classe java compilasse diretamente meu jrxml assim funcionado!

vlw quem pensou ai e me ajudou!

abracos

JasperDesign jasperDesign = JRXmlLoader.load("relatorios\\CaixaTeste.jrxml");
           JRResultSetDataSource jrRS = new JRResultSetDataSource(conexao.resultset);
           JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
         
           JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, m, jrRS);
           JasperViewer.viewReport(jasperPrint);

Cara, vlw, seu codigo me ajudou no meu projeto, brigaduuu!!!

Criado 29 de junho de 2010
Ultima resposta 2 de jun. de 2012
Respostas 7
Participantes 4