40
Aprenda con ayuda del plugin de en N Diapositivas Por: Domínguez Geniz Amalio Javier < [email protected] > < [email protected] > http://ajdgeniz.wordpress.com 25/05/2009 1 Geniz v. 1.0 Update 1

Aprendareportes Ireport Java

Embed Size (px)

Citation preview

Page 1: Aprendareportes Ireport Java

Aprenda con ayuda del

plugin de en N Diapositivas

Por:Domínguez Geniz Amalio Javier

< [email protected] >< [email protected] >

http://ajdgeniz.wordpress.com

25/05/2009 1Geniz v. 1.0 Update 1

Page 2: Aprendareportes Ireport Java

Este Manual es la primera actualización de mi tutorial pasado Titulado “Tutorial para laGeneración de Reportes Vía Web con ayuda de IReport y JSP (Java Server Pages)”.Que gracias a la amplia aceptación que ha tenido y como se los prometí en la parte pasadaahora incluyo el famoso plugin de IReport para Netbeans, además trataré de explicar y deresolver algunos problemas que tuvo el código pasado, en esta actualización encontrará queahora se generará a partir de una Interfaz Grafica hecha con el Swing de JAVA, Otra granactualización es que ahora recibirá un Parámetro para generar solo el que deseemos y lo mejores que haremos todo solo con Netbeans; espero próximamente introducir otro tema importantecomo lo es la Graficación con JFreeChar, espero les siga gustando y si tienen duda no dejen deescribirme a los correos electrónicos de la portada.

25/05/2009 2Geniz v. 1.0 Update 1

Las Marcas y LogotiposMostrados, son marcasregistradas de sus respectivasempresas en México y OtrosPaíses.

De la Colección …Aprenda en N Diapositivas

Page 3: Aprendareportes Ireport Java

25/05/2009 3Geniz v. 1.0 Update 1

1. Introducción.

En este Manual mostraré como Generar Reportes para una aplicación basadaen el SWING de JAVA, utilizaremos por supuesto a MySQL como nuestromotor de base de datos predeterminado aunque también funcionaria con unabase de datos de PostgreSQL ya que lo conectaremos mediante JDBC (JavaDataBase Connectivity) y por supuesto funcionaria bien con SQL Server, Oracleu otro a través de una conexión ODBC. Para empezar estableceremos nuestroentorno de trabajo:

Page 4: Aprendareportes Ireport Java

25/05/2009 4Geniz v. 1.0 Update 1

2. Herramientas para el Desarrollo

Netbeans 6.0(Puede utilizar esta versión e inclusive la versión mas actual (Al momento de crear este manual es la 6.7)).

Adobe Reader: Este será utilizado para ver nuestros reportes que estarán en formato PDF. Aunque en esta ocasión no es indispensable ya que los visualizaremos a través del Jasper Viewer.

MySQL 5.0: Sera el encargado de alojar a nuestra base de Datos.

Ireport y JasperReports 2.0.4 (o Superior en este momento 3.0.X): El primero será el entorno grafico que nos ayudara a crear el Reporte, mientras que de el segundo utilizaremos las librerías que nos ayudaran a compilar y ejecutar el reporte que son las siguientes:

Page 5: Aprendareportes Ireport Java

25/05/2009 5Geniz v. 1.0 Update 1

3. Librerías

•commons-beanutils-1.7•commons-collections-2.1•commons-digester-1.7•commons-javaflow-20060411•commons-logging-1.0.2•jasperreports-2.0.4•itext-1.3.1 (Importante tener esta librería ya que es la encargada de generarnuestro reporte en PDF y otros formatos)•MySQL Connector para JAVA (mysql-connector-java-5.0.7-bin): este esnuestro puente JDBC que nos permitirá la conexión entre el servidor de basede datos y las JSP (viene incluido en Netbeans).•Y para esta versión por supuesto Necesitamos el PLUGIN para Netbeans,este solo funciona para versiones superiores de la 6.0

Page 6: Aprendareportes Ireport Java

25/05/2009 6Geniz v. 1.0 Update 1

4. ¿Dónde conseguir el Software?

Todo el Software utilizado es Open Source y puede descargarlo desde:

http://www.netbeans.org Netbeans 6.0 o superior y en la seccion de PLUGINS encontrara el de IReport

http://dev.mysql.com/downloads/MySQL 5.0, Conector para Java y Herramientas Graficas.

http://ireport.sourceforge.net Ireport

Page 7: Aprendareportes Ireport Java

25/05/2009 7Geniz v. 1.0 Update 1

4. Caso de Estudio

Para realizar este tutorial, por ahora solo utilizaremos una tabla, y nuestroreporte se generara a partir de recibir un parámetro, si recuerda en el tutorialpasado lo generábamos a partir de una vista y no recibía parámetros, paraeste sencillo caso recibirá como parámetro la matricula de un estudiante, yutilizaremos única y exclusivamente el IReport que instalaremos dentro deNetbeans, si lo desea puede consultar el manual anterior disponible en estamisma sección para verificar el otro reporte.

Page 8: Aprendareportes Ireport Java

25/05/2009 8Geniz v. 1.0 Update 1

Instalación del PLUGIN

Para realizar este tutorial, por ahora solo utilizaremos una tabla, y nuestroreporte se generara a partir de recibir un parámetro, si recuerda en el tutorialpasado lo generábamos a partir de una vista y no recibía parámetros, paraeste sencillo caso recibirá como parámetro la matricula de un estudiante, yutilizaremos única y exclusivamente el IReport que instalaremos dentro deNetbeans, si lo desea puede consultar el manual anterior disponible en estamisma sección para verificar el otro reporte.

Page 9: Aprendareportes Ireport Java

25/05/2009 9Geniz v. 1.0 Update 1

Paso 1.Abra su Netbeans IDE, recuerde que este plugin solo se instalaen versiones superiores a la 6.0, una vez abierto haga clic en elmenú Tools y Seleccione Plugins

Paso 2

Ahora haga clic en lapestaña Downloadedy seguidamente en elbotón Add Plugins

Page 10: Aprendareportes Ireport Java

25/05/2009 10Geniz v. 1.0 Update 1

Paso 3Ahora localice la ubicacióndel archivo con extensiónNBM y después haga clicen el botón abrir

Paso 2A continuaciónnuestro complementoestará listo parainstalarse, notara queaparece la descripciónen la parte derecha,ahora pulse el botónInstall

Page 11: Aprendareportes Ireport Java

25/05/2009 11Geniz v. 1.0 Update 1

Paso 4

Una vez que empiece lainstalación aparecerá unWizard que le guiara, solohaga clic en siguiente yacepte los términos de lalicencia. Existe laposibilidad de queNetbeans no lo puedavalidar, para que lainstalación continúe solohaga clic en continue.

Paso 2

Page 12: Aprendareportes Ireport Java

25/05/2009 12Geniz v. 1.0 Update 1

Paso 5Listo, nuestro IReport se encuentra Instalado, para finalizar haga clic en lapestaña Installed y busque el nuevo complemento el categoría Tools

Page 13: Aprendareportes Ireport Java

25/05/2009 13Geniz v. 1.0 Update 1

Ready !!!

Como podrá darsecuenta su Netbeans acambiado un poco deapariencia, ya que seagregaron varioscomponentes comopor ejemplo losorígenes de datos(data sources) deIREPORT, además delas consolas de salida.

Page 14: Aprendareportes Ireport Java

25/05/2009 14Geniz v. 1.0 Update 1

Creando la Base de Datos

Como primer paso crearemos la base de datos, puede crearla con algunasistente grafico o desde la terminal de MySQL, utilizaremos solo una tabla opuede seguir usando vistas si es que lo desea, a manera de ejemploutilizaremos la siguiente tabla, copie o escriba el siguiente código SQL:

CREATE SCHEMA Reporte;USE Reporte;CREATE TABLE Datos(Matricula CHAR(11) PRIMARY KEY,Nombre VARCHAR(25),Apellidos VARCHAR(50),Domicilio VARCHAR(30),Grupo VARCHAR(8));

Page 15: Aprendareportes Ireport Java

25/05/2009 15Geniz v. 1.0 Update 1

Iniciando Netbeans

Una vez creada la base de datos, abra Netbeans y cree un nuevo Proyecto comoa continuación se indica:

1. Diríjase al menú archivo -> New Project2. Después elija Java -> Desktop Application3. En este paso elija un nombre y una ubicación, en caso de utilizar

Netbeans versión 7, puede indicarle que será una aplicación con BD, de locontrario elija la opción básica, en Netbeans 6 basta con esos parámetros,finalice el asistente.

Page 16: Aprendareportes Ireport Java

25/05/2009 16Geniz v. 1.0 Update 1

Configurando Netbeans 7

Como se indico anteriormente en la nueva versión de Netbeans ya puedeindicarle al IDE q se tratara de una aplicación de base de datos, si eligió estaopción siga los sig. Pasos:

1. Una vez que elijo la aplicación de base de datos, en la sig., pantalladeberá elegir “Nueva Conexión con Base de datos”(en este caso Netbeansesta en español)

Page 17: Aprendareportes Ireport Java

25/05/2009 17Geniz v. 1.0 Update 1

Configurando Netbeans 7

Elija la opción MySQL y configúrela como lo muestra la sig.. Imagen, escriba sunombre de usuario correspondiente y su password, en caso de no tener, puededejarlo en blanco.

Page 18: Aprendareportes Ireport Java

25/05/2009 18Geniz v. 1.0 Update 1

Configurando Netbeans 7

Si la conexión se realizo con éxito, la tabla ya fue extraída y los camposagregados, ahora haga clic en siguiente.

Page 19: Aprendareportes Ireport Java

25/05/2009 19Geniz v. 1.0 Update 1

Configurando Netbeans 7

Por ultimo haga clic en terminar

Page 20: Aprendareportes Ireport Java

25/05/2009 20Geniz v. 1.0 Update 1

Configurando Netbeans 7

Como se dio cuenta nos abrió un proyecto de ejemplo, puede trabajar sobreeste mismo y agregar los componentes que añadiremos en los siguientes pasoso puede continuar con los siguientes pasos que se mencionaran a continuación.

Page 21: Aprendareportes Ireport Java

25/05/2009 21Geniz v. 1.0 Update 1

Origen de Datos

Antes de hacer nuestro reporte crearemos un origen de datos para establecernuestra conexión y que nuestro reporte contenga datos reales de la BD,

Clic AQUI

Después AQUI

Seleccione esto y clic en el botón “next”

Page 22: Aprendareportes Ireport Java

25/05/2009 22Geniz v. 1.0 Update 1

Origen de Datos

Ahora complete los parámetros pedidos, cuando los tenga haga clic en el botóntest, si la conexión se realiza con éxito haga clic en save, de lo contrario corrijalos que estén mal, si el mensaje de error indica acceso denegado, puede que suusuario o password sean los incorrectos, u otro problema común es que elservidor no este activado.

Después en la pantalla de datasources seleccione el origen Reportes, aunque por default se selecciona el recién creado.

Page 23: Aprendareportes Ireport Java

25/05/2009 23Geniz v. 1.0 Update 1

Creando el Reporte

Ya creado nuestro proyecto, diseñaremos nuestro reporte como se indica:

Page 24: Aprendareportes Ireport Java

25/05/2009 24Geniz v. 1.0 Update 1

Creando el Reporte

Diseñe el reporte a su gusto, en este caso solo utilizare 4 bandas que son: title,page header, Detail, Page Footer. Las demás puede eliminarlas haciendo clicderecho sobre la misma y seleccionando Delete Band o estableciendo el valor 0en las propiedades del lado derecho.

Si por algún error elimino alguna que no debería haberse borrado, puede volveractivarla desde le Inspector de Ireport.

Page 25: Aprendareportes Ireport Java

25/05/2009 25Geniz v. 1.0 Update 1

Creando el Reporte

Agregue a la banda Detail los campos de nuestra tabla, no es necesario agregarun campo estático y después uno de texto, para realizarlo con tan solo arrastrary soltar siga los siguientes pasos:1. Haga clic derecho sobre el reporte ubicado en el panel Report Inspector y

seleccione Edit Query.

2.Ahora escriba la consulta:SELECT * FROM Datos;

Page 26: Aprendareportes Ireport Java

25/05/2009 26Geniz v. 1.0 Update 1

Creando el Reporte

Despliegue el nodo Fields del Reporte:

Ahora seleccione uno por uno y arrástrelo a la banda detail, esto nos evitaraproblemas con el tipo de datos ya que cada tipo de datos en MySQL tiene unequivalente en JAVA y esto al realizarlo de esta manera se realizara enautomatico, por ejemplo, el VARCHAR equivale a un String, el Int a INT, etc. Elreporte habara tomado una forma como la sig.

Page 27: Aprendareportes Ireport Java

25/05/2009 27Geniz v. 1.0 Update 1

Creando el Reporte

Para finalizar al diseño agregue a las bandas restantes lo siguiente:

"" + $V{PAGE_NUMBER}

Recuerde que los campos son de tipo “Text Field” y no estáticos y que ademasel tipo de dato para Date() deberá ser tipo Date.

"Page " + $V{PAGE_NUMBER} + " of "

Page 28: Aprendareportes Ireport Java

25/05/2009 28Geniz v. 1.0 Update 1

¿Error en la consulta?

Al momento de realizar la consulta cometimos una equivocación (adrede) yaque como mencionamos al principio el reporte deberá recibir un parámetropara que se realice, en este caso recibirá la matricula, así que lo que haremosprimero será agregar el parámetro al reporte y después escribiremosnuevamente la consulta en su forma correcta.En el inspector del reporte encontrara un Nodo que dice parameters , clicderecho sobre el y seleccione agregar parameter.

En la banda de propiedades póngale el nombre quedesee, en este caso se llamara igual que el campodela tabla que nos servirá en la condición,seleccione el tipo de dato que corresponda, en estecaso el INT de MySQL corresponde al Integer deJAVA. En donde dice valor de default puedeescribirle alguno para probar y este valor deberá irencerrado entre comillas dobles.

Page 29: Aprendareportes Ireport Java

25/05/2009 29Geniz v. 1.0 Update 1

Modificando la consulta

Nuevamente abra el editor de consultas y modifíquela como sigue:

Listo nuestro reporte ha sido generado, recuerde que el archivo jasper y eljrxml están almacenados en la carpeta del proyecto.

Page 30: Aprendareportes Ireport Java

25/05/2009 30Geniz v. 1.0 Update 1

Agregando Librerías

Enseguida procederemos a agregar las librerías necesarias para ejecutar elreporte y poder guardarlo en distintos formatos, desplegué el proyecto y sobrela carpeta librerías haga clic derecho y después seleccione agregar JAR busquelas librerías y selecciónelas.

Después crearemos una clase de java que será la encargada de crear y lanzar elreporte, en la siguientes pantalla se muestra todo el código fuente.

Page 31: Aprendareportes Ireport Java

25/05/2009 31Geniz v. 1.0 Update 1

IniciarReporte.java

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import javax.swing.*;import java.util.HashMap;import java.util.Map;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.util.JRLoader;import net.sf.jasperreports.view.*;import net.sf.jasperreports.view.save.JRPdfSaveContributor.*;import net.sf.jasperreports.view.JRViewer.*;import net.sf.jasperreports.view.save.JRMultipleSheetsXlsSaveContributor.*;

// Importaciones de las librerias

Page 32: Aprendareportes Ireport Java

25/05/2009 32Geniz v. 1.0 Update 1

IniciarReporte.java

*/ Se inicia la Superclase y su constructor ademas se establece la conexión*/

public class IniciarReporte{

Connection conn=null;

public IniciarReporte(){

try {

Class.forName("com.mysql.jdbc.Driver"); //se carga el driver

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/reporte","root","");JOptionPane.showMessageDialog(null,"Conexión establecida");

} catch (Exception ex){

ex.printStackTrace();}

}

Page 33: Aprendareportes Ireport Java

25/05/2009 33Geniz v. 1.0 Update 1

IniciarReporte.java

*/ Se inicia la clase que ejecutara el reporte y se carga el archivo*/

public void ejecutarReporte(String matricula){

try{

String archivo = "Reporte.jasper"; System.out.println("Cargando desde: " + archivo);if (archivo == null){

System.out.println("No se encuentra el archivo.");System.exit(2);

} JasperReport masterReport = null;try {

masterReport = (JasperReport) JRLoader.loadObject(archivo);} catch (JRException e) {

System.out.println("Error cargando el reporte maestro: " + e.getMessage());System.exit(3);

}

Page 34: Aprendareportes Ireport Java

25/05/2009 34Geniz v. 1.0 Update 1

IniciarReporte.java

/* Se pasan los parámetros introducidos por el usuario*/

//este es el parámetro, se pueden agregar más parámetros//basta con poner mas parametro.putMap parametro = new HashMap();parametro.put("Matricula",matricula);

//Reporte diseñado y compilado con iReportJasperPrint jasperPrint = JasperFillManager.fillReport(masterReport,parametro,conn);

//Se lanza el Viewer de Jasper, no termina aplicación al salirJasperViewer jviewer = new JasperViewer(jasperPrint,false);jviewer.setTitle("Geniz - Reporte");jviewer.setVisible(true);

}

catch (Exception j){

System.out.println("Mensaje de Error:"+j.getMessage());}

}

Page 35: Aprendareportes Ireport Java

25/05/2009 35Geniz v. 1.0 Update 1

IniciarReporte.java

/* por ultimo se cierra la conexión*/

public void cerrar(){

try {

conn.close();} catch (SQLException ex) {

ex.printStackTrace();}

}}

Page 36: Aprendareportes Ireport Java

25/05/2009 36Geniz v. 1.0 Update 1

Creando la pantalla de opción del reporte

Ya creado nuestro proyecto, reporte y la clase que lo lanzara procederemos aagregar un nuevo formulario como se muestra cuya función será recoger lamatricula, que es el parámetro que recibirá para realizare la consulta y ejecutarel reporte:

Después solo añada un evento al botón , para ello seleccione el botón y hagadoble clic o inclúyalo desde la paleta de propiedades en la ficha eventos.

Page 37: Aprendareportes Ireport Java

25/05/2009 37Geniz v. 1.0 Update 1

Creando la pantalla de opción del reporte

Ahora abra el código fuente del frame y ajústelo como a continuación semuestra:

Page 38: Aprendareportes Ireport Java

25/05/2009 38Geniz v. 1.0 Update 1

Ejecutando el reporte

Pues bien hemos terminado, ahora solo ejecute la aplicación y escríbale algún parámetro que tengaen la BD.

Page 39: Aprendareportes Ireport Java

25/05/2009 39Geniz v. 1.0 Update 1

Agradecimientos

Ojala y les sirva este manual, recuerden que si tienen duda pueden escribirme a mi correo o visitarmi blog donde encontraran mas manuales y recursos además de establecer contacto directoconmigo. Gracias y hasta pronto.

http://ajdgeniz.wordpress.com

Page 40: Aprendareportes Ireport Java

25/05/2009 40Geniz v. 1.0 Update 1

Próximamente… Virtualización

Mac OS X, Windows XP y Solaris ejecutándose sobre Ubuntu 9.04