REPORTES



 



REPORTES:
I.    CONTENIDO:
1.   INSTALACIÓN DE iREPORT EN NETBEANS:
Lo primero que hacemos es instalar iReport en netbeans. Este plugin en teoría no es necesario para utilizar jasperReport por separado. Este plugin nos facilita el diseño de las plantillas de jasperReport desde Netbeans.
Nos vamos a la página de netbeans y a la sección de plugins iReport y nos lo descargamos.
Una vez descargado nos vamos a Netbeans a Tools->Plugins (Herramientas->Plugins) y a la pestaña de Downloaded. Le damos al botón "AddPlugins" y buscamos la carpeta descomprimida del fichero que nos hemos descargado antes, el de iReport.


Con esto ya tenemos instalado el plugin y la librería principal de jasperReport. En Tools->Options (Herramientas->Opciones) podemos verlo.


Ahora necesitamos añadir a la librería otros ficheros y librerías para que nos funcione correctamente.
Ahora nos vamos a las opciones de nuestro proyecto, botón derecho Properties, seleccionamos Libraries, pinchamos en la de jasperReports y le damos al botón Edit. Buscamos los ficheros que os he mencionado antes y adjuntamos todo y le damos a guardar.
Ahora vamos a hacer una prueba para ver si todo funciona. Lo primero de todo es crear un fichero jasper, que es como una plantilla. Con el plugin de iReport para Netbeans es fácil. En nuestro proyecto, en el paquete le damos a botón derecho y New. Elegimos Report y Empty Report. Se abren en Netbeans unas pantallas para diseñar nuestro fichero. Lo vamos a quedar vacío.
Por último, un pequeño código que lo que hace es leer este report (extensión jrxml) en un pdf.
  
     2.CONFIGURACIÓN DE DATASOURCE:
La configuración de un Data Source para tomcat es muy sencillo, se requiere seguir los siguientes pasos: configuración Data Source y la configuración del Context.xml.
a) Archivo Context: Lo primero que se tiene que hacer es configurar el Context para esto tenemos 2 opciones:
·       Configuración Context en el war: Crear un archivo Context.xml en la aplicación en la carpeta META-INF el cual debe tener la siguiente estructura (para este ejemplo realice las pruebas con Oracle.
·       Configuración Context Tomcat: si se quiere trabajar con un solo archivo de configuración a nivel de tomcat ingresar la misma configuración en el archivo Context.xml que se encuentra en la ruta tomcat/conf si se quiere agregar más conexiones agregar un nuevo algo así:


·       Archivo web.xml: En el archivo web.xml de la aplicación agregar:
·       Utilizando el DS: En la aplicación hacemos llamado al ds con el siguiente código:
 
CREAR REPORTES USANDO WIZARD, ARCHIVO JRXML:
Luego de haber descargado el plugin iReport encontraras los archivos que tendrás que agregar al Netbeans:


Vamos a Netbeans y en Herramientas, Complementos:

Ahora agregaremos los archivos contenidos en el plugin iReport (anteriormente descargado) Agregar plugins (seleccionas todas); esperas un momento y cuando aparezca la lista le das en Instalar y en esta parte posiblemente tengas que esperar algo más pues descargará otros archivos y las configurará.

Después terminado el paso anterior aparecerá un nuevo botón en la barra de botones de Netbeans, como se muestra en la imagen siguiente:
 
Ahora le damos click en el nuevo botón y aparecerá la imagen que se muestra a continuación; en esta parte agregaremos una nueva conexión que será utilizado luego en la plantilla de JasperReport que nos servirá para crear nuestros reportes.
Seguidamente nos aparecerá la imagen de fondo y le damos en New y, nos muestra la imagen del frente.
Seleccionamos la opción Database JDBC Connection y le damos en Next.
Ahora ingresamos los parámetros necesarios como se muestra en la imagen y testeamos, recordar que nuestra clave es la misma con la que creamos nuestro proyecto inicial y la que ingresamos al momento de instalar Oracle.
y luego deberá mostrarnos que la conexion es satisfactoria.
 
Aceptamos y guardamos la conexión.
Ahora vamos a crear nuestras plantillas de JasperReport, empezamos agregando un nuevo archivo como sigue:


Seleccionamos tal como se muestra en la siguiente imagen, Report y Report wizard.

Escogemos la plantilla, para el caso seleccioné la Leaf Green (preferentemente para que te guíes con el ejemplo).


Registramos el nombre de nuestra plantilla, para el caso lo llamé reporteempleado.jrxml y damos en siguiente:

Ahora le damos en Design Query para agregar la(s) tabla(s) que van a ser consultadas desde el reporte, luego seleccionamos el usuario con el cual fue creado el reporte y le damos doble click en nuestra tabla, osea Empleado, damos en Ok:
Deberá aparecer lo siguiente:

De igual forma agregamos los campos que deseamos que aparezcan en el reporte:
Damos Siguiente puesto que no tenemos nada que agrupar.
Finalmente deberá aparecer la última ventana que mostrará que los pasos realizados con anterioridad fueron correctos. damos en Terminar.
Deberá mostrarnos los archivos y la plantilla como lo siguiente:
Ahora veremos la parte de la codificación:
Hemos modificado la clase ConexionConsolaJavaOracle agregando el método mostrarReporte y luego llamándola desde el método main.


Posiblemente nos muestre errores, es porque aún no hemos agregado los .jar necesarios para JasperReport (arbitrariamente tienen que ser todas las descargadas con anterioridad). Agregándolas nos quedará de la siguiente forma:
Si hay un error; para desaparecer ese error quiten la imagen que se mostraba en la plantilla reporteempleado.jrxml  y claro también del paquete(por algún motivo que todavía está en investigación, que posiblemente sea la versión, Netbeans no reconoce la ruta de la imagen correctamente), ahora debería quedar así:
Ahora sí, ejecutamos nuestro ConexionConsolaJavaOracle.

CAMPOS CALCULADOS EN iREPORT:
La información de los reportes es siempre alimentada por campos, es importante no confundir estos con el elemento gráfico TextField, ya que estos son únicamente para desplegar información que puede provenir de una variable, parámetro o campo.

La data source que alimenta a nuestro reporte está compuesto por los campos que nosotros determinemos. Para agregar un nuevo Field debemos indicar el nombre del campo, el tipo y alternativamente una descripción. Para el caso del reporte que estamos realizando la mayoría de los campos son numéricos, podríamos declararlos de tipo Float. Para hacer referencia a nuestro campo debemos escribir: $F{miCampo}. Esto lo podemos hacer desde cualquier expresión que escribamos dentro de nuestro reporte. Por ejemplo, podemos escribirlo como el valor de un TextField.

 

EJECUCIÓN DE REPORTES, ARCHIVO JASPER:
Una de las partes a veces menos preciada, dentro de un software son los reportes que de este podemos extraer. Los reportes son documento (que puede ser impreso, digital, audiovisual, etc.) que pretende transmitir información clara y entendible acerca del estado, las características y/o circunstancias de un suceso o asunto.
Jasper es una poderosa herramienta open source totalmente escrita en java y se utiliza para la creación de informes, utiliza diversas clases de data sources, también permite incluir reportes dentro de otros, y exportarlos en los formatos más comunes como son XLS, PDF, RTF, CSV, XML, TXT y HTML.
Existen dos herramientas totalmente visuales que nos facilita la creación de nuestros reportes Jaspersoft Studio (basado en eclipse) y el iReport Designer (basado en netbeans).  

 
En este ejemplo generaremos un solo reporte reporte_empleados.  este reporte por formato incluye dos subreportes, uno que contiene la cabecera y otro que contiene el pie de página.
 
 
 
 
 
Por cada reporte se muestran dos archivos uno es el archivo con el código editable y el otro es el archivo resultante de la compilación.

 
 


Los íconos indican que se está haciendo referencia a un sub-reporte en este caso cabecera y pie de página respectivamente.
Los archivos de reporte de jasper se crean en un formato. jrxml que luego de compilarlo pasa a ser .jasper se puede usar cualquiera de los dos para la generación del reportes, personalmente prefiero los .jasper porque ya están compilados y es un poco más rápido.
También hay que tener en cuenta que como estamos trabajando con Java, a los reportes debemos especificarle que estamos trabajando con ese lenguaje. Y para los reportes cuando los exportamos en HTML a las imágenes (en este caso el logo) le seteamos que sean Lazy.



A nivel de GUI se creó una para generar el reporte de empleados, cuando damos clic en el botón “Generar” de Listado de empleados.



ENLACE DE REPORTE CON VENTANA JDIALOG.USO DE JASPERVIEWER Y EJEMPLOS:
El JFrame te permite crear una ventana con ciertas características, por ejemplo, podemos visualizarla en nuestra barra de tareas, de contrario de los JDialog, ya que estos últimos son Ventanas de Dialogo con un comportamiento diferente, no se puede ver la ventana en la barra de tareas ni posee los botones comunes de maximizar o minimizar.
Los JDialog pueden ser hijos de JFrames o de otros JDialog mientras que losJFrame no, es decir, si tenemos claros conceptos de programación podemos relacionar esto de Hijos con el concepto de Herencia (Aunque no directamente, es mas a nivel conceptual), con estos componentes podemos hacer que una Ventana sea Padre de otra Ventana de tipo JDialog, asignándole algún tipo de comportamiento o dejando la ventana padre como Principal.
Los reportes son otras de las utilidades más importantes en las aplicaciones ya que su función es dar al usuario información ordenada y limpia así como un formato adecuado para poder ser llevado a impresión o almacenarlo en algún tipo de fichero como: .doc, .odt, pdf, etc.
Antes de continuar, debemos contar en el proyecto con la librería: jasperreports-3.7.6.jar
Si antes se instaló el JasperReports es posible que la librería ya lo tengamos en el ordenador, incluso el IDE de desarrollo lo tiene indexado, solo deberá ser añadido a proyecto.
Otras de la librerías que necesitaremos están comentados en el encabezado del código de Ejemplo.
El siguiente procedimiento va a recibir como parámetro la ubicación del reporte dentro del proyecto, para ello será necesario incluir los reportes en algún directorio dentro del proyecto en el que trabajamos, en mi caso la estructura es la siguiente:
beastieux --> reports --> MyReporte.jrxml
private void abrirReporte(String archivo)
    {
        try {
            JasperReport report = JasperCompileManager.compileReport(archivo);
            JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), coneccionSQL());
            JasperViewer.viewReport(print, false);
        } catch (JRException jRException) {
            System.out.println(jRException.getMessage());
        }
    }

La línea de código encargada de generar la ruta absoluta de la ubicación del reporte es el siguiente:
getClass().getResource("/beastieux/reports/MiReporte.jrxml").getPath()
Además, algo muy importante que se necesita para abrir el reporte es la conexión a la base de datos. En este ejemplo lo hice con PostgreSQL, ustedes pueden hacerlo con el que gusten, pueden verlos en los ejemplos de conexión a diferentes bases de datos realizados en los post anteriores de este tutorial. Como observarán, la función coneccionSQL() nos retorna la conexión a la base de datos, el cual será usado directamente como tercer parámetro en la linea:
JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), coneccionSQL());

EJEMPLO:
jasperreports-3.7.6.jar
 * commons-digester-1.7.jar
 * commons-logging-1.0.4.jar
 * commons-collections-2.1.1.jar
 * commons-beanutils-1.8.0.jar
 */
package beastieux.gui;
import java.awt.CardLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JFrame;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.view.JasperViewer;
/**
 *
 * @author beastieux
 */
public class Ejm20_JasperReport extends JFrame {
    public Ejm20_JasperReport()
    {
        JButton btn1=new JButton("Abrir Reporte");
            btn1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn1ActionPerformed(evt);
            }
        });
        this.add(btn1);
        this.setLayout(new CardLayout());
        this.setSize(200,100);
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    }
    private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {
        abrirReporte(getClass().getResource("/beastieux/reports/MiReporte.jrxml").getPath());
    }
    private void abrirReporte(String archivo)
    {
        try {
            JasperReport report = JasperCompileManager.compileReport(archivo);
            JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), coneccionSQL());
            JasperViewer.viewReport(print, false);
        } catch (JRException jRException) {
            System.out.println(jRException.getMessage());
        }
    }
    private Connection coneccionSQL()
    {
           try
            {
                    String cadena;
                    cadena="jdbc:postgresql://127.0.0.1:5432/postgres";
                    Class.forName("org.postgresql.Driver");
                    Connection con = DriverManager.getConnection(cadena, "usuario","contraseña");
                    return con;
            }
            catch(Exception e)
            {
                   System.out.println(e.getMessage());
            }
            return null;
    }
    public static void main (String args[])
    {
        Ejm20_JasperReport obj = new Ejm20_JasperReport ();
        obj. setVisible(true);
    }
}

II.    RESUMEN:
iReport es un constructor / diseñador de informes visual, poderoso, intuitivo y fácil de usar para JasperReports escrito en Java. Este instrumento permite que los usuarios corrijan visualmente informes complejos con cartas, imágenes, subinformes, etc. iReport está además integrado conJFreeChart, una de la biblioteca gráficas OpenSource más difundida para Java. Los datos para imprimir pueden ser recuperados por varios caminos incluso múltiples uniones JDBC, TableModels, JavaBeans, XML, etc.
Para que podamos pasar datos a nuestro reporte es necesario que utilicemos un datasource.
El iReport viene como un archivo comprimido. Esto contiene los archivos de distribución principales (clases y fuente), algunas plantillas para el ayudante (wizard), todos los .jar requeridos adicionales. Esta herramienta trabaja de manera integrada con el jasperreport, por lo tanto, no se requiere una instalación adicional de jasper.
Para levantar la aplicación del iReport, debe dirigirse hasta el lugar donde descomprimió los archivos, ahí ejecutar el comando iReport.bat.

III.    SUMMARY:
iReport is a visual, powerful, intuitive and easy to use report designer / builder for JasperReports written in Java. This tool allows users to visually correct complex reports with letters, images, subreports, etc. iReport is also integrated with JFreeChart, one of the most popular OpenSource graphic library for Java. The data to be printed can be recovered by several paths including multiple JDBC, TableModels, JavaBeans, XML, etc. junctions.
So that we can pass data to our report it is necessary that we use a datasource.
The iReport comes as a compressed file. This contains the main distribution files (classes and source), some templates for the helper (wizard), all additional .jar required. This tool works in an integrated way with jasperreport, therefore, no additional installation of jasper is required.
To lift the iReport application, you must go to the place where you unzipped the files, there execute the command iReport.bat.

IV.    RECOMENDACIONES:
·       La extensión de documentos de reportes generados por JasperReports es ".jrxml" que significa "jasper reports xml", y es un documento xml que contiene los datos para generar un archivo compilado (".jasper") que se usa principalmente en las aplicaciones Java (aunque también se puede optar por compilar nuestro archivo ".jrxml" desde la misma aplicación Java y así generar el archivo ".jasper" correspondiente).
·    Es recomendable el uso conjunto de la biblioteca JasperReports y la herramienta iReport Designer, También se puede usar el mismo NetBeans con JSF.
·  Para los reportes tienes JarperReports que podemos usar con iReport para más sencillez.

V.    CONCLUSIONES:
Jasper Report es una librería para la generación de informes. Está escrita en java y es libre.
JasperReports juntamente con iReport está considerada como una de las mejores bibliotecas de software libre para generar los reportes son más sencillos porque se ve la forma de poder conectarnos a diferentes bases de datos en este caso a SQL server, eso sí con la limitación de tener que utilizar un informe por cada consulta. Esto no es problema ya que podemos incluir tantos sus informes como queramos obteniendo finalmente el resultado que esperábamos.
VI.    APRECIACIÓN DEL EQUIPO:
JasperReports con iReport es de gran ayuda ya que su software es libre y se puede consultar los datos que están en Base de Datos ya sea SQL, MySQL Server,etc, y a partir de los datos podemos crear campos calculados para así hacer de la información más clara y sencilla.

VII.    GLOSARIO DE TÉRMINOS:

·     Campo calculado: Es un campo que no se almacena físicamente en la tabla .SQL Server emplea una fórmula que detalla el usuario al definir dicho campo para calcular el valor según otros campos de la misma tabla. Un campo calculado no puede: - definirse como "not null".
·       Software libre: Se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software: La libertad de usar el programa, con cualquier propósito (libertad 0).
·       Datasource: Esta norma propone el uso de fuente de datos (DataSource), para tal fin. La API JDBC (Java Data Base Connectivity) proporciona una interfaz de programación para acceso a datos de Base de Datos Relacionales desde el lenguaje de programación Java: El paquete java.sql es el corazón de la API JDBC 2.0.
·       Plugin: Firefox 42 se bloquea al intentar ejecutar el plugin de Java. NOTA: La solución alternativa se aplica a Firefox 42 y requiere la instalación de Windows Java Versión 8 Actualización 66 Versión 18 o versiones posteriores.
·       Jasperreports: Es una biblioteca de creación de informes que tiene la habilidad de entregar contenido enriquecido al monitor, a la impresora o a ficheros PDF, HTML, XLS, CSV y XML.
·       TOMCAT: Es un contenedor de servlets que se utiliza en la Referencia oficial de la implementación para Java Servlet y JavaServer Pages (JSP). Las especificaciones Java Servlet y JavaServer Pages son desarrolladas por Sun Microsystems cuyas especificaciones vienen dadas por la JCP (Java Community Process). Apache Tomcat es desarrollado en un entorno abierto y participatorio, bajo la licencia de Apache Software License.
·     JNDI: El Java Naming and Directory Interface (JNDI) es una interface de programación (API) que proporciona funcionalidades de nombrado y directorio a las aplicaciones escritas usando Java. Está definido para ser independiente de cualquier implementación de servicio de directorio.
·     WAR: Software libre: Se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software: La libertad de usar el programa, con cualquier propósito (libertad 0).
·     Datasource: Esta norma propone el uso de fuente de datos (DataSource), para tal fin. La API JDBC (Java Data Base Connectivity) proporciona una interfaz de programación para acceso a datos de Base de Datos Relacionales desde el lenguaje de programación Java: El paquete java.sql es el corazón de la API JDBC 2.0.
·   Plugin: Firefox 42 se bloquea al intentar ejecutar el plugin de Java. NOTA: La solución alternativa se aplica a Firefox 42 y requiere la instalación de Windows Java Versión 8 Actualización 66 Versión 18 o versiones posteriores.

VIII.    LINKOGRAFÍA:
·       http://sandritascs.blogspot.pe/2014/10/instalar-jasperreport-e-ireport-en.html
·       https://es.slideshare.net/sandritascs/instalar-jasperreport-e-ireport-en-netbeans-8
·       http://javaenaccion.blogspot.pe/2012/04/creacion-de-reportes-con-java-netbeans.html
·       http://www.javerosanonimos.com/2011/08/campos-variables-y-parametros.html
·       https://ingeniods.wordpress.com/2013/05/21/jasper-report-virtualizacion-y-generacion-de-reportes/
·       https://es.slideshare.net/LisbethOcaaBueno/reportes-84023726








Comentarios

Entradas más populares de este blog

TRANSACCIONES EN SQL SERVER

APLICACIONES N-CAPAS EN VISUAL.NET

PROCEDIMIENTOS ALMACENADOS