Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con iReport

Estas en el tema de Problema con iReport en el foro de Java en Foros del Web. Soy nueva en esto de la creación de reportes con ireports, yo genero un reporte con un subreporte y cuando lo ejecuto se repiten los ...
  #1 (permalink)  
Antiguo 07/07/2008, 06:01
 
Fecha de Ingreso: febrero-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 0
Problema con iReport

Soy nueva en esto de la creación de reportes con ireports, yo genero un reporte con un subreporte y cuando lo ejecuto se repiten los datos del subreport hasta llenarme 152 hojas cuando solo es necesaria una y me pasa lo mismo cuando hago la llamada desde netbeans.
No se como solucionarlo, adjunto el código por si facilita las cosas:

Código:
import java.util.*;
import java.sql.*;
import java.sql.Date;
import java.awt.event.*;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.lang.String;



/*Librerías necesarias para Jasper Reports*/
import org.apache.commons.beanutils.*;
import org.apache.commons.collections.*;
import org.apache.commons.digester.*;
import org.apache.commons.logging.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.JRException;


public class Report1 extends Thread {
    cConnection conexion;
          
          
       public void run () {
           try
           {
String urlMaestro = "C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4.jasper";
String urlSubreporte = "C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4_subreport0.jasper";

//URL urlMaestro = this.getClass().getResource("C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4.jasper");  
//URL urlSubreporte = this.getClass().getResource("C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4_subreport0.jasper");

      if (urlMaestro == null) {
   System.out.println("No encuentro el archivo del reporte maestro.");
        System.exit(2);
      }
           if (urlSubreporte == null) {
        System.out.println("No encuentro el archivo del subreporte.");
   System.exit(2);
      }
   
    JasperReport masterReport = null;
      try {
         masterReport = (JasperReport) JRLoader.loadObject(urlMaestro);
      } catch (JRException e) {
         System.out.println("Error cargando el reporte maestro: " + e.getMessage());
         System.exit(3);
      }
            JasperReport subReport = null;
      try {
         subReport = (JasperReport) JRLoader.loadObject(urlSubreporte);
      } catch (JRException e) {
         System.out.println("Error cargando el subreporte: " + e.getMessage());
         System.exit(3);
      }

//Ruta del archivo jasper
//               String fileName = "C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4.jasper";
//Obtener una conexion a la base de datos
               conexion = new cConnection();
               Connection con = conexion.mkConection();
                ResultSet rs = null;
            Statement stm = con.createStatement();
            String strSQL = "SELECT Budget.Project,Budget.Date,Company.IdentityCard,Company.Name,Expenditures.Budget," +
                    "Expenditures.Hito,Expenditures.Description,Expenditures.UnitCost,Expenditures.Units,Expenditures.Quota," +
                    "Project.Code,Project.Acronym,Project.Title,Project.Company FROM Budget,Company,Expenditures,Project " +
                    "WHERE Budget.Project=\'ABCDEFG\' AND Budget.Date=\'2008-01-01\';";
//Ejecuta la consulta SQL
            rs = stm.executeQuery(strSQL);
            rs.next();
            String budgetProject = rs.getString("Project");
            java.sql.Date fecha  = new java.sql.Date(0);
            fecha = rs.getDate("Date");
            String cif = rs.getString("IdentityCard");
            String name = rs.getString("Name");
            int budgetexpenditures = rs.getInt("Budget");
            int hito = rs.getInt("Hito");
            String descripcion = rs.getString("Description");
            double unitcost = rs.getDouble("UnitCost");
            double units = rs.getDouble("Units");
            double quota = rs.getDouble("Quota");
            String codigo = rs.getString("Code");
            String acronimo = rs.getString("Acronym");
            String titulo = rs.getString("Title");
            int comp = rs.getInt("Company");
            
            
            
            
            System.out.println("Titulo: "+titulo+"   Comp: "+comp);
//Trabajar con el result set…
            strSQL = "SELECT FullName FROM Company WHERE EN="+comp+";";
            rs = stm.executeQuery(strSQL);
            rs.next();
            String company = rs.getString("FullName");
//Cerrar todo
            
           rs.close();
           stm.close();
            
//Pasamos parametros al reporte
               Map parameters=new HashMap();
            parameters.put("Project",budgetProject);
            parameters.put("Date",fecha);
            parameters.put("IdentityCard",cif);
            parameters.put("Name",name);
            parameters.put("Budget",budgetexpenditures);
            parameters.put("Hito",hito);
            parameters.put("Descripction",descripcion);
            parameters.put("UnitCost",unitcost);
            parameters.put("Units",units);
            parameters.put("Quota",quota);
            parameters.put("FullName",company);
            parameters.put("Code",codigo);
            parameters.put("Acronym",acronimo);
            parameters.put("Title",titulo);
            parameters.put("Company",comp);
            parameters.put("SUBREPORT",subReport);
            parameters.put("CODE",codigo);
            parameters.put("DATE",fecha);
            
            
            
            try{
 //Preparación del reporte (reporte diseñado con ireport)
           JasperPrint jasperPrint=JasperFillManager.fillReport(masterReport,parameters,con);
            //Se lanza el viewer de jasper, no termina la aplicación al salir
           JasperExportManager.exportReportToPdfFile(jasperPrint, "H:/reportes/Reportes en pdf/Reporte.pdf");
            //Se lanza el Viewer de Jasper, no termina aplicación al salir
           JasperViewer jviewer = new JasperViewer(jasperPrint,false);
           jviewer.setVisible(true);
            //jviewer.show();
            }catch (JRException e) {
         System.out.println("Error llenando el reporte maestro: " + e.getMessage());
         try {
            con.close();
         } catch (SQLException e1) {
         }
         System.exit(5);
      }
           
           
                     
           }catch(Exception j)
           {
               System.out.println("Mensaje de Error:"+j.getMessage());
           }
           finally{
               conexion.closeConnection();
           }
       
       }
       

       public static void main(String[] args){
        Report1 thread_exp = new Report1();
        thread_exp.run();
    }
}
       class cConnection {
    /*Atributos*/
    private String url = "";
    private String usr = "";
    private String pswd = "";
    private Connection con;
    /*Constructor, carga puente JDBC-ODBC*/
    public cConnection() {
        loadDriver();
    }
    /**
     * Carga el driver de la conexión a la base de datos
     */
    private void loadDriver() {
        try {
//Instancía de una nueva clase para el puente
//sun.jdbc.odbc.JdbcOdbcDriver
//El puente sirve entre la aplicación y el driver.
            Class.forName( "" );
        } catch(ClassNotFoundException e) {
            System.out.println("Error al crear el puente JDBC-ODBC");
        }
    }
    /**
     * Obtiene una conexión con el nombre del driver especificado
     * @param driverName Nombre del driver de la base de datos
     * @return
     */
    public Connection mkConection() {
        //url = url + driver;
        System.out.println("Estableciendo conexión con " + url);
        try {
//Obtiene la conexión
            con = DriverManager.getConnection( url,usr,pswd);
        } catch(SQLException sqle) {
            System.out.println("No se pudo establecer la conexión");
            return null;
        }
        System.out.println("Conexión establecida con: " + url);
//Regresa la conexión
        return con;
    }
  /* Cerrar la conexión.
 */
    public boolean closeConnection() {
        try {
            con.close();
        } catch(SQLException sqle) {
            System.out.println("No se cerro la conexión");
            return false;
        }
        System.out.println("Conexión cerrada con éxito ");
        return true;
    }
    
       }
      //class cConnection
muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:29.