019 - Aplicación de Stock con Java. Hibernate – MySQL – JPA. iReport. Reporte para referencial Proveedor.

Iniciamos el diseño para nuestro reporte, debemos de crear un archivo nuevo en nuestro iReport, el nombre del archivo será “ProveedorReport”. Para tener más datos sobre los diferentes elementos de un reporte podemos consultar el siguiente enlace (iReport. Introducción para crear informes). La configuración de la hoja normal es el A4.
En la imagen de más abajo se puede ver el diseño del reporte terminado, con los “Fields” correspondientes, “Variables” y demás. Hay que respetar el nombre para cada “Field”, como también tipo de datos, este último se puede cambiar consultando las propiedades de cada “Field”. Se puede ampliar la imagen haciendo clic en ella.
Elementos del diseño del reporte: 1) Un “Label” como descripción del reporte. 2) Una “Variable” para el número de páginas. 3) “Labels” para describir datos de columnas. 4) “Fields” o campos para la banda de detalles. Para el borde se utiliza “Rectangle” de fondo y sin borde. En (iReport. Introducción para crear informes) vimos cómo trabajar con cada elemento. Un detalle importante a tener en cuenta es el nombre para cada “Field” ya que serán iguales a las que le pasaremos desde Java con nuestra lista creada.
Completado el diseño debemos de compilar el reporte y obtener los archivos necesarios “ProveedorReport.jasper” y “ProveedorReport.jrxml” respectivamente. Estos archivos de reporte debemos de copiar en nuestra carpeta “informes”, que creamos al inicio del proyecto.
El siguiente paso es crear un método para ejecutar el reporte. Abajo el método “informe()” para ejecutar el reporte. Los comentarios explican que función cumple cada línea de código. Este método la llamamos desde el botón “Informe” de nuestro formulario “ProveedorApp” utilizando el evento “ActionPerformed”.
Código Java
public void informe(){
//try - para controlar las excepciones.
try {
//Creamos una lista de los datos de la tabla "Proveedor" utilizando "List".
//Iniciamos una transacción.
st.beginTransaction();
List<Proveedor> lista = (List<Proveedor>)st.createQuery("From Proveedor").list();
//Utilizamos el método siguiente para cargar el reporte "ProveedorReport.jasper"
//El "JRLoader.loadObject" es el cargador.
JasperReport report = (JasperReport)JRLoader.loadObject(ClassLoader.getSystemResource("com/informes/ProveedorReport.jasper"));
//El método siguiente nos permite pasarle los datos al reporte utilizando JRBeanCollectionDataSource y como argumento la lista que creamos más arriba.
//La lista posee todos los campos necesarios para pasarle datos al reporte.
JasperPrint fillReport = JasperFillManager.fillReport(report, null,new JRBeanCollectionDataSource(lista));
//El JasperViewer para visualizar, le pasamos como argumento nuestro "fillReport" de arriba.
JasperViewer jviewer = new JasperViewer(fillReport,false);
//Le damos un título al reporte.
jviewer.setTitle("Lista de Proveedores");
//La hacemos visible.
jviewer.setVisible(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error cargando reporte.");
}
}
En caso de que el IDE indique error de sintaxis, verificar si tenemos todas las importaciones necesarias. A continuación la lista.
Código Java
import com.entidades.Proveedor;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import org.hibernate.Session;
import util.HibernateUtil;
Por último el formulario en ejecución junto con el reporte. En caso que el reporte aparezca detrás del formulario, modificar la propiedad “modalityType” del “JDialog” indicando que sea “DOCUMENT_MODAL”. (clic para ampliar imagen)

No hay comentarios :

Publicar un comentario en la entrada