IReport Erro com Parametros

0 respostas
Leandro-Freitas

Olá Pessoal

Bom estou com um sistema DeskTop 75% pronto, mas estou com problemas quando faço a passagem de parâmetros com Objetos que tenho na minha aplicação.
Para que vocês possam entender melhor é um sistema que o usuário seleciona a Letra e digita a quantidade de Etiquetas e o número inicial.
Ex: letra Qtd Número
B 20 10

Nesse caso ira imprimir 20 etiquetas com a Letra B a partir do número 10, 11, 12, 13, 14…30
Ele gera o relatório mas com os números finais e 28,29 e 30 e não mostra os anteriores.
Segue os códigos para que vocês possam entender melhor e os Prints da tela do sistema e do Relatório
Classe Relatório

package colecao;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

//package atualizacaocadastral;


/*
* @(#)Relatorio.java   1.0 28/04/2006
*
* Copyright 2006 Marcos Vinícius Soares. Todos os direitos reservados.
* [email removido]
*
*/

import java.sql.*;
import java.net.URL;
import java.util.HashMap;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.*;



/**
* Relatorio.java<br>
*
* <p>A classe Relatorio deve ser utilizada para emissão de relatórios. Após a
* criação de algum relatório é possível exibí-lo na tela, exportá-lo para um
* arquivo pdf/html ou enviá-lo direto para impressão.</p>
*
* <p>A classe manipula relatórios desenvolvidos utilizando-se a ferramenta
* iReport e utiliza a ferramenta JasperReports para emissão dos relatórios</p>
*
* @author  Marcos Vinícius Soares
*/
public class Relatorio {

    /** Representa o relatório gerado. */
    private JasperPrint jasperPrint_;
    //private Conexao db = new Conexao();



    /**
     * Cria um novo Relatorio.
     *
     * @param  conn  Conexão com o banco de dados.
     * @param  parameters  Parâmetros a serem exibidos no relatório.
     * @param  localRelatorio  Localização do relatório.
     * @throws  JRException  Caso o relatório não seja encontrado ou haja
     * algum problema com ele, uma exceção é gerada.
     */
    public Relatorio(Conexao db, HashMap parameters, URL localRelatorio) throws JRException, Exception{

        try {

            // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
            // Ou seja, o arquivo .jasper
            JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);

            // JasperPrint representa o relatório gerado.
            // É criado um JasperPrint a partir de um JasperReport, contendo o relatório preenchido.
            this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, db.getConnection());

    } catch (JRException e) { throw e; }
    }



    /**
     * Cria um novo Relatorio.
     *
     * @param  conn  Conexão com o banco de dados.
     * @param  parameters  Parâmetros a serem exibidos no relatório.
     * @param  localRelatorio  Localização do relatório.
     * @throws  JRException  Caso o relatório não seja encontrado ou haja
     * algum problema com ele, uma exceção é gerada.
     */
    public Relatorio(Conexao db, HashMap parameters, String localRelatorio) throws JRException, Exception{

        try {

            // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
            // Ou seja, o arquivo .jasper
            JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);

            // JasperPrint representa o relatório gerado.
            // É criado um JasperPrint a partir de um JasperReport, contendo o relatório preenchido.
            this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, db.getConnection());

    } catch (JRException e) { throw e; }
    }



    /**
     * Cria um novo Relatorio.
     *
     * @param  conn  Conexão com o banco de dados.
     * @param  sql  Expressão SQL (SELECT...) a ser utilizada para preenchimento do relatório
     * @param  parameters  Parâmetros a serem exibidos no relatório.
     * @param  localRelatorio  Localização do relatório.
     * @throws  JRException  Caso o relatório não seja encontrado ou haja
     * algum problema com ele, uma exceção é gerada.
     * @throws  SQLException  Caso exista alguma divergência ou problema com
     * a Expressão SQL passada como parâmetro, uma exceção é gerada.
     */
    public Relatorio(Conexao db, String sql,
            HashMap parameters, URL localRelatorio) throws SQLException, JRException {

        try {

            // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
            // Ou seja, o arquivo .jasper
            JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);

            // Resultado da consulta
            ResultSet rs = db.executeQuery(sql);

            // JRResultSetDataSource é uma implementaçao de JRDataSource, o qual é requerido
            // como parametro para preencher o relatório criado.
            // Ele armazena o dados do ResultSet
            JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

            // JasperPrint representa o relatório gerado.
            // É criado um JasperPrint a partir de um JasperReport, contendo o
            // relatório preenchido.
            this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrRS);
            rs.close();
        }
        catch (SQLException e) { throw e; }
        catch (JRException e) { throw e; }
    }



    /**
     * Cria um novo Relatorio.
     *
     * @param  conn  Conexão com o banco de dados.
     * @param  sql  Expressão SQL (SELECT...) a ser utilizada para preenchimento do relatório
     * @param  parameters  Parâmetros a serem exibidos no relatório.
     * @param  localRelatorio  Localização do relatório.
     * @throws  JRException  Caso o relatório não seja encontrado ou haja
     * algum problema com ele, uma exceção é gerada.
     * @throws  SQLException  Caso exista alguma divergência ou problema com
     * a Expressão SQL passada como parâmetro, uma exceção é gerada.
     */
    public Relatorio(Conexao db, String sql,
            HashMap parameters, String localRelatorio) throws SQLException, JRException {
        try {

            // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
            // Ou seja, o arquivo .jasper
            JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);

            // Resultado da consulta
            ResultSet rs = db.executeQuery(sql);

            // JRResultSetDataSource é uma implementaçao de JRDataSource, o qual é requerido
            // como parametro para preencher o relatório criado.
            // Ele armazena o dados do ResultSet
            JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

            // JasperPrint representa o relatório gerado.
            // É criado um JasperPrint a partir de um JasperReport, contendo o
            // relatório preenchido.
            this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrRS);

            rs.close();

        }
        catch (SQLException e) { throw e; }
        catch (JRException e) { throw e; }
    }



    /**
     * Cria um novo Relatorio.
     *
     * @param  parameters  Parâmetros a serem exibidos no relatório.
     * @param  localRelatorio  Localização do relatório.
     * @throws  JRException  Caso o relatório não seja encontrado ou haja
     * algum problema com ele, uma exceção é gerada.
     */
    public Relatorio(HashMap parameters, URL localRelatorio) throws JRException {

        try {

            // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
            // Ou seja, o arquivo .jasper
            JasperReport jr = (JasperReport) JRLoader.loadObject(localRelatorio);

            // JREmptyDataSource é uma implementaçao de JRDataSource, o qual é requerido
            // como parametro para preencher o relatório criado.
            // Ele armazena o dados do ResultSet, que, neste caso, é vazio
            JREmptyDataSource jrEDS = new JREmptyDataSource();

            // Jasper Print representa o relatório gerado.
            // É criado um JasperPrint a partir de um JasperReport, contendo o
            // relatório preenchido.
            this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrEDS);

        } catch (JRException e) { throw e; }
    }



    /**
     * Cria um novo Relatorio
     *
     * @param  parameters  Parâmetros a serem exibidos no relatório.
     * @param  localRelatorio  Localização do relatório.
     * @throws  JRException  Caso o relatório não seja encontrado ou haja
     * algum problema com ele, uma exceção é gerada.
     */
    public Relatorio(HashMap parameters, String localRelatorio) throws JRException {

        try {

            // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
            // Ou seja, o arquivo .jasper
            JasperReport jr = (JasperReport) JRLoader.loadObject(localRelatorio);

            // JREmptyDataSource é uma implementaçao de JRDataSource, o qual é requerido
            // como parametro para preencher o relatório criado.
            // Ele armazena o dados do ResultSet, que, neste caso, é vazio
            JREmptyDataSource jrEDS = new JREmptyDataSource();

            // Jasper Print representa o relatório gerado.
            // É criado um JasperPrint a partir de um JasperReport, contendo o
            // relatório preenchido.
            this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrEDS);

        } catch (JRException e) { throw e; }
    }

    Relatorio(HashMap parameters, String path, String aux) {
        throw new UnsupportedOperationException("Not yet implemented");
    }



    /**
     * Exibe o relatório na tela.
     */
    public void exibirRelatorio() {
        // emite o relatório na tela
        // false indica que a aplicação não será finalizada caso o relatório seja fechado
        JasperViewer.viewReport(this.jasperPrint_, false);
    }



    /**
     * Grava o relatório em um arquivo de formato pdf.
     *
     * @param  caminhoDestino  Caminho onde o arquivo será gravado.
     */
    public void exportaParaPdf(String caminhoDestino) throws JRException {

        try {
            // Gera o arquivo PDF
            JasperExportManager.exportReportToPdfFile(this.jasperPrint_, caminhoDestino);
        } catch (JRException e) { throw e; }
    }



    /**
     * Grava o relatório em um arquivo de formato html.
     *
     * @param  caminhoDestino  Caminho onde o arquivo será gravado.
     */
    public void exportaParaHtml(String caminhoDestino) throws JRException {

        try {
            // Gera o arquivo PDF
            JasperExportManager.exportReportToHtmlFile(this.jasperPrint_, caminhoDestino);
        } catch (JRException e) { throw e; }
    }



    /**
     * Envia o relatório para impressão, exibindo uma caixa de dialogo de impressão ou não.
     *
     * @param  exibeCaixaDialogo  Boolean indicando se será exibida uma caixa de diálogo ou não.
     */
    public void imprimir(boolean exibeCaixaDialogo) throws JRException {

        try {
            // Imprime o relatório
            // o segundo parâmetro indica se existirá uma caixa de dialogo antes ou nao
            JasperPrintManager.printReport(this.jasperPrint_, exibeCaixaDialogo);
        } catch (JRException e) { throw e; }

    }
}

Código que chama o relatório e faz o for para incremento da quantidade de etiquetas

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
        int i, n;
        int[] a;
        String aux = "";     
        Relatorio relatorio = null;
        HashMap parameters = new HashMap();
        Scanner s = new Scanner(txtQtd.getText()); /*ESTA LINHA DEFINE A QUANTIADE DE ETIQUETAS*/      
        i = s.nextInt();
        a = new int[1+i];
        n = a.length + 1;       
        //String path = "etiquetas_2.jasper";
         String path = "report1.jasper";
        /*ESTE FOR FAZ A CONTAGEM DOS NÚMEROS*/
        for (i = 1; i < a.length; i++) {                
            System.out.println("Etiqueta Número[" + i + "]=" + a[i]); 
            parameters.put(JRParameter.IS_IGNORE_PAGINATION, false);  
            parameters.put("letra", ComboLetra.getSelectedItem().toString()); 
            parameters.put("numero1", txtQtd.getUIClassID().valueOf(i++));
            parameters.put("numero2", txtQtd.getUIClassID().valueOf(i++));
            parameters.put("numero3", txtQtd.getUIClassID().valueOf(i));  
       
            
        }
         /*TRY PARA EXIBIR*/
        try {              
                relatorio = new Relatorio(parameters, path);
            } catch (JRException ex) {
                Logger.getLogger(imprimir.class.getName()).log(Level.SEVERE, null, ex);               
            }
            relatorio.exibirRelatorio();
          
      
           
            /*TRY PARA IMPRESSÃO*/
            /*try {
                relatorio = new Relatorio(parameters, path);    
                relatorio.imprimir(true);
            } catch (JRException ex) {
                Logger.getLogger(Impressao.class.getName()).log(Level.SEVERE, null, ex);
            }*/
        
        
}




Criado 6 de maio de 2011
Respostas 0
Participantes 1