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.