Criar subrelatorios com ireport - Resolvido

9 respostas
DeGuedes

Galera to precisando da ajuda de vcs, eu criei 2 relatorios e nao estou conseguindo chamar o sub relatorio no relatorio principal. Ja olhei inumeros tutoriais, ja li varios posts, porem nenhum deu certo comigo.
Pelo q eu entendi é necessario criar um parametro denro do principal, mas nao sei como faze-lo.

Alguem pode me ajudar?

9 Respostas

tinorberto

qual o erro que aparece?

DeGuedes

Na verdade nao aparece nenhum erro, eu nao sei é configurar o sub relatorio para q ele apareça junto com o relatorio principal. eu to usando o subreport, porem qunado eu chamo relatorio ele aparece somente o principal…

DeGuedes

creio q esqueci de configurar algo, pois eu vi num exemplo q eh necessario configurar um parametro dentro do relatorio principal, mas nao sei como fazer isso…
Obrigado

DeGuedes

tentei criar um novo relatorio simples q seria chamado pelo principal, e nem esse funcionou, ele simplesmente ignora o subrelatorio e mostra somente o principal, vo colocar as classes q estou utilizando de repente o erro possa estar nelas…

essa eh minha classe DANFEDATASOURCE

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;
import modelo.nfe.NFe;
import modelo.nfe.NfeDet;
import modelo.nfe.NfeTotal;
import negocio.nfe.NfeDetJpaController;
import negocio.nfe.NfeTotalJpaController;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;

public class DanfeDataSource implements JRDataSource {

    private Iterator<NFe> iterator;
    private NFe cursor;
    private static JRDataSource data;

    public DanfeDataSource(Vector<NFe> nfe) {
        super();
        iterator = nfe.iterator();
    }

    @Override
    public boolean next() throws JRException {
        boolean retorno = iterator.hasNext();
        if (retorno) {
            cursor = iterator.next();
        }
        return retorno;
    }

    @Override
    public Object getFieldValue(JRField nome) throws JRException {
        NFe nfe = cursor;



        List<NfeTotal> lsttotal = new ArrayList<NfeTotal>();
        NfeTotalJpaController nfetotaljpa = new NfeTotalJpaController();

        lsttotal = nfetotaljpa.findTotalbyNFe(nfe);


        if (nome.getName().equals("nfe_versao")) {
            return nfe.getVersao();
        }
        if (nome.getName().equals("nfe_id")) {
            return nfe.getId();
        }
        if (nome.getName().equals("nfe_signature")) {
            return nfe.getSignature();
        }
        if (nome.getName().equals("nfe_xnemp")) {
            return nfe.getxNEmp();
        }
        if (nome.getName().equals("nfe_xped")) {
            return nfe.getxPed();
        }
        if (nome.getName().equals("nfe_xcont")) {
            return nfe.getxCont();
        }
        if (nome.getName().equals("nfeide_serie")) {
            return nfe.getNfeIde().getSerie();
        }
        if (nome.getName().equals("nfeemit_xnome")) {
            return nfe.getNfeEmit().getxNome();
        }
        if (nome.getName().equals("nfeide_demi")) {
            return nfe.getNfeIde().getdEmi();
        }
        if (nome.getName().equals("nfetotal_vnf")) {
            return lsttotal.get(0).getvNF();
        }
        if (nome.getName().equals("nfedest_cnpj")) {
            return nfe.getNfeDest().getCNPJ();
        }
        if (nome.getName().equals("nfedest_xnome")) {
            return nfe.getNfeDest().getxNome();
        }
        if (nome.getName().equals("nfedest_xnome")) {
            return nfe.getNfeDest().getxNome();
        }
        if (nome.getName().equals("nfeide_nnf")) {
            return nfe.getNfeIde().getnNF();
        }
        if (nome.getName().equals("nfeide_tpnf")) {
            return nfe.getNfeIde().getTpNF();
        }
        if (nome.getName().equals("nfeide_natop")) {
            return nfe.getNfeIde().getNatOp();
        }
        if (nome.getName().equals("nfeemit_ie")) {
            return nfe.getNfeEmit().getIE();
        }
        if (nome.getName().equals("nfeemit_iest")) {
            return nfe.getNfeEmit().getIEST();
        }
        if (nome.getName().equals("nfeemit_cnpj")) {
            return nfe.getNfeEmit().getCNPJ();
        }
        if (nome.getName().equals("nfedestend_nro")) {
            return nfe.getNfeDest().getNfeDestEnd().getNro();
        }
        if (nome.getName().equals("nfedestend_xcpl")) {
            return nfe.getNfeDest().getNfeDestEnd().getxCpl();
        }
        if (nome.getName().equals("nfedestend_xlgr")) {
            return nfe.getNfeDest().getNfeDestEnd().getxLgr();
        }
        if (nome.getName().equals("nfedestend_xbairro")) {
            return nfe.getNfeDest().getNfeDestEnd().getxBairro();
        }
        if (nome.getName().equals("nfedestend_cep")) {
            return nfe.getNfeDest().getNfeDestEnd().getCEP();
        }
        if (nome.getName().equals("nfeide_dsaient")) {
            return nfe.getNfeIde().getdSaiEnt();
        }
        if (nome.getName().equals("nfeide_hsaient")) {
            return nfe.getNfeIde().gethSaiEnt();
        }
        if (nome.getName().equals("nfedestend_xmun")) {
            return nfe.getNfeDest().getNfeDestEnd().getxMun();
        }
        if (nome.getName().equals("nfedestend_fone")) {
            return nfe.getNfeDest().getNfeDestEnd().getFone();
        }
        if (nome.getName().equals("nfedestend_xuf")) {
            return nfe.getNfeDest().getNfeDestEnd().getxUF();
        }
        if (nome.getName().equals("nfedest_ie")) {
            return nfe.getNfeDest().getIE();
        }
        if (nome.getName().equals("nfetransp_xnome")) {
            return nfe.getNfeTransp().getxNome();
        }
        if (nome.getName().equals("nfetransp_xender")) {
            return nfe.getNfeTransp().getxEnder();
        }
        if (nome.getName().equals("nfetransp_qvol")) {
            return nfe.getNfeTransp().getqVol();
        }
        if (nome.getName().equals("nfetransp_esp")) {
            return nfe.getNfeTransp().getEsp();
        }
        if (nome.getName().equals("nfetransp_marca")) {
            return nfe.getNfeTransp().getMarca();
        }
        if (nome.getName().equals("nfetransp_esp")) {
            return nfe.getNfeTransp().getEsp();
        }
        if (nome.getName().equals("nfetransp_xmun")) {
            return nfe.getNfeTransp().getxMun();
        }
        if (nome.getName().equals("nfetransp_placa")) {
            return nfe.getNfeTransp().getPlaca();
        }
        if (nome.getName().equals("nfetransp_uf")) {
            return nfe.getNfeTransp().getUF();
        }
        if (nome.getName().equals("nfetransp_cnpj")) {
            return nfe.getNfeTransp().getCNPJ();
        }
        if (nome.getName().equals("nfetransp_ie")) {
            return nfe.getNfeTransp().getIE();
        }
        if (nome.getName().equals("nfetransp_pesob")) {
            return nfe.getNfeTransp().getPesoB();
        }
        if (nome.getName().equals("nfetransp_pesol")) {
            return nfe.getNfeTransp().getPesoL();
        }
        if (nome.getName().equals("nfetransp_nvol")) {
            return nfe.getNfeTransp().getnVol();
        }
        if (nome.getName().equals("nfeemit_im")) {
            return nfe.getNfeEmit().getIM();
        }
        if (nome.getName().equals("nfetotal_vicms")) {
            return lsttotal.get(0).getvICMS();
        }
        if (nome.getName().equals("nfetotal_vserv")) {
            return lsttotal.get(0).getvServ();
        }
        if (nome.getName().equals("nfetotal_vseg")) {
            return lsttotal.get(0).getvSeg();
        }
        if (nome.getName().equals("nfetotal_vdesc")) {
            return lsttotal.get(0).getvDesc();
        }
        if (nome.getName().equals("nfetotal_voutro")) {
            return lsttotal.get(0).getvOutro();
        }
        if (nome.getName().equals("nfetotal_vfrete")) {
            return lsttotal.get(0).getvFrete();
        }
        if (nome.getName().equals("nfetotal_vipi")) {
            return lsttotal.get(0).getvIPI();
        }
        if (nome.getName().equals("nfetotal_vprod")) {
            return lsttotal.get(0).getvProd();
        }
        if (nome.getName().equals("nfetotal_vbc_iss")) {
            return lsttotal.get(0).getvBCST();
        }
        if (nome.getName().equals("nfetotal_viss")) {
            return lsttotal.get(0).getvISS();
        }

        DanfeDataItensSourceFactory.createDatasource(nfe);

        return null;
    }
}

Essa e DANFEDATASOURCEFACTORY

import java.util.Vector;
import javax.swing.JOptionPane;
import modelo.nfe.NFe;
import negocio.nfe.NFeJpaController;

import net.sf.jasperreports.engine.JRDataSource;

public class DanfeDataSourceFactory {

    static NFe Nfe;

	private static JRDataSource data;

	public static JRDataSource createDatasource() {
		if (data == null) {
                        NFe nfe = new NFe();
                        NFeJpaController nfejpa = new NFeJpaController();
                        nfe = nfejpa.findNFe(1L);

                        Vector<NFe> vtnfe=new Vector<NFe>();
                        vtnfe.add(nfe);

                        Nfe = nfe;


			data = new DanfeDataSource(vtnfe);
		}
		return data;
	}
}

classe DANFEITENSDATASOURCE

import java.util.Iterator;
import java.util.Vector;
import javax.swing.JOptionPane;
import modelo.nfe.NfeDet;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;

public class DanfeItensDataSource implements JRDataSource {

    private Iterator<NfeDet> iterator;
    private NfeDet cursor;

    public DanfeItensDataSource(Vector<NfeDet> nfedet) {
        super();
        iterator = nfedet.iterator();
    }

    @Override
    public boolean next() throws JRException {
        
        boolean retorno = iterator.hasNext();
        if (retorno) {
            cursor = iterator.next();
        }
        return retorno;
    }

    @Override
    public Object getFieldValue(JRField nome) throws JRException {
        NfeDet nfedet = cursor;

        System.out.println("passou em itens");
        System.out.println(nome.getName());
        if (nome.getName().equals("nfeprod_cprod")) {
            return nfedet.getNfeProd().getcProd();
        }
        if (nome.getName().equals("nfeprod_infaprod")) {
            return nfedet.getNfeProd().getInfAdProd();
        }
        if (nome.getName().equals("nfeprod_ncm")) {
            return nfedet.getNfeProd().getNCM();
        }
        if (nome.getName().equals("nfeprod_cfop")) {
            return nfedet.getNfeProd().getCFOP();
        }
        if (nome.getName().equals("nfeprod_utrib")) {
            return nfedet.getNfeProd().getuTrib();
        }
        if (nome.getName().equals("nfeprod_qtrib")) {
            return nfedet.getNfeProd().getqTrib();
        }
        if (nome.getName().equals("nfeprod_vuncom")) {
            return nfedet.getNfeProd().getvUnCom();
        }
        if (nome.getName().equals("nfeprod_vprod")) {
            return nfedet.getNfeProd().getvProd();
        }
        if (nome.getName().equals("nfeicms_vbc")) {
            return nfedet.getNfeICMS().getvBC();
        }
        if (nome.getName().equals("nfeicms_vicms")) {
            return nfedet.getNfeICMS().getvICMS();
        }
        if (nome.getName().equals("nfeipi_vipi")) {
            return nfedet.getNfeIPI().getvIPI();
        }
        if (nome.getName().equals("nfeipi_pipi")) {
            return nfedet.getNfeIPI().getpIPI();
        }
        if (nome.getName().equals("nfeicms_picms")) {
            return nfedet.getNfeICMS().getpICMS();
        }


        return null;

    }
}

classe DanfeDATAITENSSOURCEFACTORY

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import modelo.nfe.NFe;
import modelo.nfe.NfeDet;
import negocio.nfe.NfeDetJpaController;

import net.sf.jasperreports.engine.JRDataSource;

public class DanfeDataItensSourceFactory {

	private static JRDataSource data;

	public static JRDataSource createDatasource(NFe nfe) {
		if (data == null) {
                        List<NfeDet> lstdef = new ArrayList<NfeDet>();
                        NfeDetJpaController nfejpa = new NfeDetJpaController();
                        
                        lstdef = nfejpa.findDetbyNFe(nfe);

                        Vector<NfeDet> vtnfe=new Vector<NfeDet>();

                        vtnfe.addAll(lstdef);
                        System.out.println(lstdef);
                        System.out.println(vtnfe);

			data = new DanfeItensDataSource(vtnfe);
		}
		return data;
	}
}

e por fim a classe q gera o danfe

import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.view.JasperViewer;

public class ImprimeDanfe {

    public static void gerarRelatorio(JRDataSource source) throws JRException {

        Map map = new HashMap();
        JasperFillManager.fillReport("DanfeRetrato.jasper", map, source);
        //JasperFillManager.fillReportToFile("nullDanfeItemRetrato.jasper", map, source);
        //JasperFillManager.fillReportToFile("/home/f2pro/NetBeansProjects/f2erp/DanfeItemRetrato.jasper", map, source);
        //JasperExportManager.exportReportToPdfFile("DanfeRetrato.jrprint");
        JasperViewer.viewReport("DanfeRetrato.jrprint", false);

    }

 
    public static void main(String[] args) {

        try {
            ImprimeDanfe.gerarRelatorio(DanfeDataSourceFactory.createDatasource());
            // ImprimeDanfe.gerarRelatorio(DanfeDataItensSourceFactory.createDatasource(DanfeDataSourceFactory.returnnfe()));
        } catch (JRException e) {
            System.out.println("erro " + e);
        }
    }

Alguem pode me ajudar?

Gerva

olha amigo na verdade não tem segredo nenhum e só é nescessario configurar algo caso os relatórios estiverem em otra pasta ou quera enviar parametros para o subrelatorio

espero que sua versão do ireport nõ seja muito antiga… é o seguinte:

  • no relatorio principal crie o componente para subrelatorio (que fica disponível na paleta)
  • já aparecerão as opções de configuração caso voce quizer chamar um relatorio já existente apenas configure ali
  • depois é soh alegria… caso queira configurar parametros, va nas propriedades do subrelatorio (pelo relatorio principal) e escolha a opção “parametros”, assim é soh definir o parametro/valor
Gerva

espero ter ajudado xD

DeGuedes

Opa vlw pela resposta Gerva, mas eu fiz exatamente isso, tanto q se eu executo pelo proprio ireport ele da certo, porem ao execeuta-lo no netbeans ele simplesmente ignora o subrelatorio, e mostra somente o principal… :frowning:

Gerva

faz o seguinte cara, manda por parametro o diretorio dos subReports

DeGuedes

cara eu tive q criar um HASHTABLE e setar o diretorio do sub relatorio e setar tambem a lista q eu tenho q enviar para o sub relatorio… depois de sofrer muito deu certoooo
Muito obrigado a todos por me ajudarem!!! :wink:

Criado 8 de outubro de 2010
Ultima resposta 14 de out. de 2010
Respostas 9
Participantes 3