Atualização iReport 3.5.1 para 3.7.X arquivos *.jasper em branco

03/03/2010

1

tenho uma aplicação para web, com varios relatorios ja funcionando perfeitamente com javaBeans datasorce, enviando um collection com os dados. Porem prescisei criar um relatorio com codigo de barras dai atualizei o ireport. e os mesmos relatorios que funcionam no 3.5, quando copilados no 3.7 nao mostra os dados sendo executado pela aplicacao ja no proprio iReport mostra os dados, sendo que o codigo é o mesmo, o mais incrivel e que quando se abre o arquivo *.jasper e converte em *.jrxml os arquivos jasper copilados no iReport 3.7.x aparecem vazil. e na aplicacao nao aparecem nenhuma mensagem de exceçao e nem erro. ja quebrei a cabeca por muitas alternativas mas ate o momento nenhuma luz... alguem ja passou por isso, ou tem uma pista do que seja?
Responder

Posts

05/03/2010

Dyego Carmo

Tentou recriar estes relatorios utilizando a versao 3.7 ?

Pode ser alguma caracteristica em alguma declaracao no jrxml que esteja atrapalhando.

Responder
já sim, ja fiz o mesmo relatorio no 3.7 e tambem nao deu, parece ser um bug do ireport, quando se trata de <javaBeans set dataSource> pq quando dar preview mostra certinho o relatorio, mas quando gera pela aplicacao nao mostra nada, ai por curiosidade eu tentei abri o arquivo jasper, ai vi a diferenca e que quando vc tenta abrir o arquivo jasper o ireporte monta um jrxml com a mesma estrutura do relatorio isso no ireport 3.5 ja no 3.7 nao mostra nada. pode ser que ele esteja montando o arquivo jasper vazil por isso nao mostra os dados, mas isso e uma apenas uma hipótese pois ainda estou no escuro.


Responder

Iiiiiiiiiiiiruuuuuuuuuuu deu certo!

Depois de muita insistencia constatei que para funcionar no 3.7.X tenho que copilar o arquivo *.jrxml em tempo de execução e nao da forma que estava fazendo utilizando o arquivo ja copilado o *.jasper.

vai ai um exemplo de como utilizei para copilar em tempo de execuçao;


import java.util.Vector;

public class Rel_Blocos {
    private int condominio;
    private int codigo;
    private String nome;


    public Rel_Blocos(int condominio, int codigo, String nome){
        this.condominio=condominio;
        this.codigo=codigo;
        this.nome=nome;
    }
    nao esqueça dos gets e sets

}

//classe que monta um vetor com collection
import java.util.Collection;
public class ControladorRel {
    public static Collection geraRelBloco(){
        Vector v = new Vector();
        v.add(new Rel_Blocos(1,1, "teste"));
        v.add(new Rel_Blocos(1,2, "teste2"));
        return v;
    }
}

  public String getRelatorioBloco(){
            ControladorRel controladorRel = new ControladorRel();
            Map parameters = new HashMap();

            Collection dados = controladorRel.geraRelBloco();
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(dados);

            JasperDesign jasperDesign = JRXmlLoader.load("WEB-INF//reports//teste.jrxml");
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, ds);

            JasperExportManager.exportReportToPdfFile(jasperPrint, caminhoRealDoArquivoVaiSerGravadoEmPDF);
  }
 
qualquer duvidas pode entrar em contato por e-mail
  
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira