viernes, 22 de marzo de 2013

IREPORT JasperViewer

Hola a todo el mundo que está metido en este mundo de programación, este es mi primer post y espero que pueda satisfacer sus necesidades.
Bueno voy a pasar a mostrar un poco de código para que puedan observar lo fácil que es mostrar una vista preliminar de nuestros reportes desde java...
Lo primero es nuestra conexión a la base de datos, para este ejemplo usare una base de datos en access... en fin, no importa el motor de base de datos, solo agregar el jdbc y cambiar la cadena de conexión.

La clase tiene como nombre Modulo()




public class Modulo {
    private final static Logger LOGGER = Logger.getLogger(Modulo.class.getName()); //Es muy importante el uso del LOGGER para poder mostrar mensajes y no el famoso System.out.print();
    String Driver="sun.jdbc.odbc.JdbcOdbcDriver";
    String URL="jdbc:odbc:Driver=Microsoft Access Driver (*.mdb);DBQ=C:/DataBase.mdb"; //Aquí deberían cambiar según el motor de base de datos que usan.
    String User="Administrador";
    String Password="pass";
    public Connection getConexionBD(){
        Connection cn = null;
        try {
            Class.forName(Driver).newInstance();
            cn=DriverManager.getConnection(URL,User,Password);            
            LOGGER.info("Se conecto!");
        } catch (Exception e) {
            LOGGER.warning(e.getMessage());
        }
        return cn; //Retorna la conexion
    }   
} 

En esta clase tenemos un metodo llamado MostrarReporteViewer(), recibe como
parametros la ruta donde esta nuestro reporte .jasper y los parametros del reporte.
public class Reportes {
  Connection cn=null;
  public void MostrarReporteViewer(String Ruta,Map parametros){
        try {
            BasicConfigurator.configure();
            Modulo obj = new Modulo();
            cn=obj.getConexionBD();            
            JasperReport reporte = (JasperReport) JRLoader.loadObject(Ruta);
            ////////////////////////////////////
            parametros.put(JRParameter.REPORT_LOCALE, Locale.US);
            //Esta línea es muy importante si el formato de los números de tu país es “999,999.00”, 
            //el IReport te mostrara por default “999.999,00”, con esta simple línea podrás solucionar ese problema.
            ////////////////////////////////////
            JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros, cn);
            JasperViewer jviewer=new JasperViewer(jasperPrint,false);
            jviewer.setTitle("");
            jviewer.setVisible(true);
            cn.close();
        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null,"Problemas al Diseñar el reporte");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Problemas en la BD");
        }   
  }  
}


En esta clase arrancamos el reporte.

public class Ver {
    static Reportes reportes = new Reportes();
    public static void main(String[] args) {
        String Ruta="C:/ReportePrueba.jasper";//Ruta de reporte .Jasper
        Map parametros = new HashMap();//Parametros mapeados
        parametros.put("Codigo","001");//Parametro llamado "Codigo", se envia 001
        reportes.MostrarReporteViewer(Ruta, parametros);
    }
}