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()
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); } }
... y para que sirve "BasicConfigurator.configure(); ".
ResponderEliminarPorque cuando lo ejecuto me sale << java.lang.noclassdeffounderror org/apache/commons/logging/logfactory >>. Donde me indica que me falta la librería "commons-logging-xxx.jar".
Hola,
EliminarEn el metodo que conecta a base de datos uso log4j entonces cuando este metodo es llamado desde donde se genera el reporte requiere de eso para cargar el log.
Saludos.
no me pasa esta parte: JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros, cn);
ResponderEliminarasí lo tengo yo:
try {
String RutaInformeGanancias = "D:\\Exposicion\\23-04 InventOKY\\StoryOKY 5.0\\src\\Reportes\\Ganancias.jasper";
// if (RutaInformeGanancias == null) {
// System.out.println("No encuentro el archivo del reporte.");
// System.exit(2);
// }
Map parametros = new HashMap();
parametros.put("fechaIn", Fecha);
parametros.put("fechaFin", Fecha2);
JasperPrint jasperPrint = JasperFillManager.fillReport(RutaInformeGanancias, parametros, obj.getConnection());
JasperViewer jviewer = new JasperViewer(jasperPrint, true);
jviewer.setTitle("Ganancias");
jviewer.setVisible(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Error al Generar el informe" + e);
}
finally
{
obj.desconectar();
}
sería genial si me pudieras ayudar.