Friday, August 19, 2011

iReport con DataClassG

Cuando deseamos crear reportes con iReport de nuestro API de persistencia creado con DataClassG.
Seguimos estos pasos básicos:
Ir al sitio de Jasper
http://jasperforge.org/project/ireport
Descargar el plugin de NetBeans y la distribución para linux(esta al usaremos para obtener las librerias que agregaremos a nuestro proyecto).
Instalamos el plugin para NetBeans


En el Menú de NetBeans seleccionar Herramientas->Tools->Option->iReport ->Classpath.
Agregamos el JAR


Agregamos las librerias al proyecto. Esta las puedes encontrar en el directorio.
iReport-4.1.1->ireport->modules->ext


Listado de las librerias a incluir


Diseñar el Reporte
Creamos un paquete nuevo para almacenar los reportes


Nuevo->Report->Empty report


Colocamos el nombre usuarios. En el diseño
seleccionamos en la pestaña Reportes ->Reportes->Edit Query


Seleccionar JavaBean DataSource-> en Class name colocar el nombre del beans correspondiente al proyecto de persistencia.
En este ejemplo org.testpersistence.beans.Usuarios y presionar el
botón Read attributes y seleccionar los atributos cedula y nombre y presionar el botón Add selected field(s), de manera que aparezcan en la parte inferior.


Ahora se muestran los campos


Arrastramos a la banda de Detalles


Ahora compilamos el reporte


Invocaremos el Reporte
HashMap map = new HashMap();
Usuarios usuarios = new Usuarios();
UsuariosController uc = new UsuariosController();
if (uc.Listar()) {
t.Imprimir(uc.getUsuarioslist(), map);
} else {
System.out.println(" no se puede listar");
}


Creamos el metodo Imprimir()

private void Imprimir(List aux, HashMap map) throws JRException {
try {
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(aux);
//Indicamos la ruta del reporte
InputStream reporte = (InputStream) getClass().getResourceAsStream("reportes/usuarios.jasper");
if (reporte == null) {
Mensajeria.Mensaje("No se pudo cargar el reporte");
} else {
JasperPrint print = JasperFillManager.fillReport(reporte, map, ds);
JasperViewer.viewReport(print, false);
}
} catch (Exception ex) {
Mensajeria.MensajeError(ex, "Imprimir()");
}
}

Reporte










1 comment:

Anonymous said...

Tengo un problema, he llegado hasta el punto donde se debe poner el 'javaBean DataSource', pero todas las rutas q he probado, no agarra ninguna.

Mi proyecto está hecho en JSF, y para ello, el reporte debe acceder a otro paquete.

Tenes idea o me podrás aconsejar como llegar hasta los entity?

Gracias!