JasperReport (RESOLVIDO!)

3 respostas
igor_jua

Galera…ja trabalhei uma única vez com o JasperReport e a forma com que eu desenvolvi o relatorio foi por passagem de parametros.
Agora precisei da ferramenta novamente.
Estou fazendo um DANFE (NFe) com ele.
Eu tenho aproximadamente 42 fields que devem ser preenchidos.
aqui estão minhas classes.

public class Modelo {





     String dtRecebimento="  ";
     String certAssinaturaCli="  ";
     String nNFe="  ";
     String seriesNfe="  ";
     String inscEstadual;
     String inscEstadualTribut="  ";
     String cnpj="  ";
     String dtEmissao="  ";
     String endereco="  ";
     String bairroDistrito="  ";
     String cep="  ";
     String dtEntrada="  ";
     String municipio="  ";
     String fone="  ";
     String uf="  ";
     String horaSaida="  ";
     String baseIcms="  ";
     String valorIcms="  ";
     String desconto="  ";
     String valorIpi="  ";
     String valorTotalNota="  ";
     String baseCalcIcmsSubst="  ";
     String valorFrete="  ";
     String valorTotProdutos="  ";
     String valorSeguro="  ";
     String razaoSoc="  ";
     String codAnit= "  ";
     String placaVeic="  ";
     String quantidade="  ";
     String especie="  ";
     String marca="  ";
     String numero="  ";
     String pesoBruto="  ";
     String pesoLiquido="  ";
     String inscMunicipal="  ";
     String valorTotal="  ";
     String baseISSQN="  ";
     String valorISSQN="  ";

    public Modelo(Nfe nfe) {
    this.insertValues(nfe);
    }

    public Modelo() {
    }

private void insertValues(Nfe nfe){
    CabecaNota cn =null;
    ItemNota it[]=null;
    //NewTags nt = null;

    cn=nfe.getCn();
    it=nfe.getIn();
    //nt=nfe.getNt();
    if(cn!=null && it!=null){
    this.dtRecebimento=cn.getDataDiaEntrada();
    //this.certAssinaturaCliente
    this.nNFe=cn.getNumNot();
    this.seriesNfe=cn.getNumSerie();
    //this.inscEstadual
    this.cnpj=cn.get_emitCNPJ();
    this.dtEmissao=cn.getDataEmi();

    //tipo de frete
    //0 por conta da transp
    //1 por conta do emit

    if(cn.getTipFrete().equals("0")){

        this.endereco=cn.getEnderecoTransp();
        this.municipio=cn.getMunicipioTranspo();
        this.uf=cn.getUfTransp();

    }
     if(cn.getTipFrete().equals("1")){

        this.endereco=cn.getLogradouroEnderecoEmitente()+cn.getBairroEnderecoEmitente()+cn.getNumeroEnderecoEmitente();
        this.municipio=cn.getNomeMunicipioEnderecoEmitente();
       this.bairroDistrito=cn.getBairroEnderecoEmitente();
       this.fone=cn.getFoneEnderecoEmitente();
       this.uf=cn.getUfEnderecoEmitente();
    }

    this.dtEntrada=cn.getDataDiaEntrada()+"/"+cn.getDataMesEntrada()+"/"+cn.getDataAnoEntrada();
    this.baseIcms=cn.getValBaseCalcICMS();
    this.valorIcms=cn.getValIcms();
    this.desconto=cn.getValDescFin();
    this.valorIpi=cn.getValIpi();
    this.valorTotalNota=cn.getValNot();
    this.baseCalcIcmsSubst=cn.getValIcmsSubst();
    this.valorTotProdutos=cn.getValBrutMerc();
    this.valorFrete=cn.getValFrete();
    this.valorSeguro=cn.getValSeguro();
    //this.razaoSoc=cn.get
    //this.placaVeic
    this.quantidade=it.length+"";
    //this.especie=cn.
    //this.numero
    this.pesoBruto=cn.getPesoBruto();
    this.pesoLiquido=cn.getPesoLiq();
    //this.inscEstadual
    //this.valorTotal=cn.getv

        System.out.println("Gravou tudo");

metodo de que gera o relatorio:

public void iniciar() throws JRException {
        try {
        nfe.loadCabecaNota();
        nfe.loadItemNota();
        nfe.loadNewTags();
        
            //String caminhoRelJasper = "/TesteFaturamento.jasper";
        String caminhoRelJasper = "/Danfe.jasper";
            //List<Textos> list = null;//o list não era do tipo boleto
            List<Modelo> list = null;
            Modelo da = new Modelo(nfe);

            list=new ArrayList<Modelo>();
            list.add(da);
                //Textos t = new Textos(nfe);
                //list=new ArrayList<Textos>();
                //list.add(t);


                InputStream relJasper = getClass().getResourceAsStream(caminhoRelJasper);
                JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
                Map map = new HashMap();
                map.put("pathSubRel", caminhoRelJasper);
                JasperPrint impressao = JasperFillManager.fillReport(relJasper, map, ds);

                    JasperViewer viewer = new JasperViewer(impressao, false);
                    viewer.setDefaultCloseOperation(JasperViewer.HIDE_ON_CLOSE);
                    viewer.setTitle("Faturamento");
                    viewer.setVisible(true);



        } catch (Exception e) {


            e.printStackTrace();
        }

    }

toda vida que eu executo este codigo ele gera :

Tendo isso em vista, eu fui e verifiquei(como vcs podem ver) que os nomes das variaveis são os mesmos, com isso fui ao IReport e deletei e criei um novo field com um nome diferente…quando executei novamente o erro deu com a variavel seguinte e assim sucessivamente formando um ciclo.

Alguem Pelo amor de Deus sabe como corrigir isto?

3 Respostas

igor_jua

Resolvido Galera!!!
Consegui descobrir o que era…

neeryck

Velhão!! Posta aí o CORRETO então…talvez seja a dúvida de outra pessoa! Inclusive deixa eu te falar… vc não tem uma classe simples aí pra eu analizar como faço pra exibir o relatório?? Eu até consigo exibir a página de impressão mais sem o devido relatório dentro saca?? Se poder ajudar agradeço!!!

Abraço!

PadrE

Puts… podia mesmo postar a solução… assim nao ficaria um post perdido… Se você voltar e postar agradeceriamos. mas de qlqr forma, ai vai minha suges~toa para a solução… espero que ajude aos que possuem o mesmo problema…

Pelo erro ali em cima… me parece ser tipo incompatível entre o dtRecebimento e o que vc configurou no código ou mesmo no Campo do iReport.

Fui !

Criado 1 de setembro de 2009
Ultima resposta 21 de set. de 2009
Respostas 3
Participantes 3