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?