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

Iniciamos la creación del reporte para “Tipo” de artículos creando un nuevo archivo, el nombre del archivo será “TipoReport”. Para entender más sobre el proceso de creación de informes se puede consultar iReport. Introducción para crear informes. La configuración de la hoja normal es el A4.

Abajo podemos ver una imagen de cómo queda el diseño del reporte completado, es bastante sencillo pero suficiente. En la imagen se indican los objetos que se agregan. Más abajo se explica de forma básica cada objeto agregado.
El reporte en si contiene estos elementos: 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 los bordes y divisores se utiliza “Line” de la paleta. 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; las designadas para este reporte son “id” y “des” que nos mostraran el “ID” y la “Descripción” de cada tipo de artículo que tengamos.

Una vez terminado el diseño podremos ver una vista previa del reporte o compilarla y obtener los dos archivos, en este caso “TipoReport.jasper” y “TipoReport.jrxml”. Estos archivos las copiamos en la carpeta “Informes”.

El siguiente paso es crear un método para ejecutar el reporte y llamarla desde el botón informe que está incluido en el formulario “TipoApp”.
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” utilizando el evento “ActionPerformed”.
Código Java
public void informe(){
//try - para controlar las excepciones.
try {
//Creamos una lista de los datos de la table "Tipo" utilizando "List".
st.beginTransaction();
List<Tipo> lista = (List<Tipo>)st.createQuery("From Tipo").list();
//Utilizamos el método siguiente para cargar el reporte "TipoReport.jasper"
//El "JRLoader.loadObject" es el cargador.
JasperReport report = (JasperReport)JRLoader.loadObject(ClassLoader.getSystemResource("com/informes/TipoReport.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 dos campos por registro: "id" y "des", los nombres se corresponden con las agregadas en el reporte diseñado.
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 Tipos de Artículos.");
//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.Tipo;
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” indicando que sea “DOCUMENT_MODAL”.

1 comentario :

  1. Hola excelente todo!!! solo quitaria st.beginTransaction(); cuando se hacen las consultas =) saludos!!!

    ResponderEliminar