Reportes Con Netbeans y IReport

Embed Size (px)

Citation preview

  • Aprenda con ayuda del

    plugin de en N Diapositivas

    Por:Domnguez Geniz Amalio Javier

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

    http://ajdgeniz.wordpress.com

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

  • Este Manual es la primera actualizacin de mi tutorial pasado Titulado Tutorial para laGeneracin de Reportes Va Web con ayuda de IReport y JSP (Java Server Pages).Que gracias a la amplia aceptacin que ha tenido y como se los promet en la parte pasadaahora incluyo el famoso plugin de IReport para Netbeans, adems tratar de explicar y deresolver algunos problemas que tuvo el cdigo pasado, en esta actualizacin encontrar queahora se generar a partir de una Interfaz Grafica hecha con el Swing de JAVA, Otra granactualizacin es que ahora recibir un Parmetro para generar solo el que deseemos y lo mejores que haremos todo solo con Netbeans; espero prximamente introducir otro tema importantecomo lo es la Graficacin con JFreeChar, espero les siga gustando y si tienen duda no dejen deescribirme a los correos electrnicos de la portada.

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

    Las Marcas y LogotiposMostrados, son marcasregistradas de sus respectivasempresas en Mxico y OtrosPases.

    De la Coleccin Aprenda en N Diapositivas

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

    1. Introduccin.

    En este Manual mostrar como Generar Reportes para una aplicacin basadaen el SWING de JAVA, utilizaremos por supuesto a MySQL como nuestromotor de base de datos predeterminado aunque tambin 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 travs de una conexin ODBC. Para empezar estableceremos nuestroentorno de trabajo:

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

    2. Herramientas para el Desarrollo

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

    Adobe Reader: Este ser utilizado para ver nuestros reportes que estarn en formato PDF. Aunque en esta ocasin no es indispensable ya que los visualizaremos a travs 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 libreras que nos ayudaran a compilar y ejecutar el reporte que son las siguientes:

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

    3. Libreras

    commons-beanutils-1.7commons-collections-2.1commons-digester-1.7commons-javaflow-20060411commons-logging-1.0.2jasperreports-2.0.4itext-1.3.1 (Importante tener esta librera 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 conexin entre el servidor de basede datos y las JSP (viene incluido en Netbeans).Y para esta versin por supuesto Necesitamos el PLUGIN para Netbeans,este solo funciona para versiones superiores de la 6.0

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

    4. Dnde 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

  • 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 parmetro, si recuerda en el tutorialpasado lo generbamos a partir de una vista y no reciba parmetros, paraeste sencillo caso recibir como parmetro 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 seccin para verificar el otro reporte.

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

    Instalacin del PLUGIN

    Para realizar este tutorial, por ahora solo utilizaremos una tabla, y nuestroreporte se generara a partir de recibir un parmetro, si recuerda en el tutorialpasado lo generbamos a partir de una vista y no reciba parmetros, paraeste sencillo caso recibir como parmetro 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 seccin para verificar el otro reporte.

  • 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 lapestaa Downloadedy seguidamente en elbotn Add Plugins

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

    Paso 3Ahora localice la ubicacindel archivo con extensinNBM y despus haga clicen el botn abrir

    Paso 2A continuacinnuestro complementoestar listo parainstalarse, notara queaparece la descripcinen la parte derecha,ahora pulse el botnInstall

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

    Paso 4

    Una vez que empiece lainstalacin aparecer unWizard que le guiara, solohaga clic en siguiente yacepte los trminos de lalicencia. Existe laposibilidad de queNetbeans no lo puedavalidar, para que lainstalacin contine solohaga clic en continue.

    Paso 2

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

    Paso 5Listo, nuestro IReport se encuentra Instalado, para finalizar haga clic en lapestaa Installed y busque el nuevo complemento el categora Tools

  • 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 losorgenes de datos(data sources) deIREPORT, adems delas consolas de salida.

  • 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 cdigo 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));

  • 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 continuacin se indica:

    1. Dirjase al men archivo -> New Project2. Despus elija Java -> Desktop Application3. En este paso elija un nombre y una ubicacin, en caso de utilizar

    Netbeans versin 7, puede indicarle que ser una aplicacin con BD, de locontrario elija la opcin bsica, en Netbeans 6 basta con esos parmetros,finalice el asistente.

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

    Configurando Netbeans 7

    Como se indico anteriormente en la nueva versin de Netbeans ya puedeindicarle al IDE q se tratara de una aplicacin de base de datos, si eligi estaopcin siga los sig. Pasos:

    1. Una vez que elijo la aplicacin de base de datos, en la sig., pantalladeber elegir Nueva Conexin con Base de datos(en este caso Netbeansesta en espaol)

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

    Configurando Netbeans 7

    Elija la opcin MySQL y configrela como lo muestra la sig.. Imagen, escriba sunombre de usuario correspondiente y su password, en caso de no tener, puededejarlo en blanco.

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

    Configurando Netbeans 7

    Si la conexin se realizo con xito, la tabla ya fue extrada y los camposagregados, ahora haga clic en siguiente.

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

    Configurando Netbeans 7

    Por ultimo haga clic en terminar

  • 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 aadiremos en los siguientes pasoso puede continuar con los siguientes pasos que se mencionaran a continuacin.

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

    Origen de Datos

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

    Clic AQUI

    Despus AQUI

    Seleccione esto y clic en el botn next

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

    Origen de Datos

    Ahora complete los parmetros pedidos, cuando los tenga haga clic en el botntest, si la conexin se realiza con xito haga clic en save, de lo contrario corrijalos que estn mal, si el mensaje de error indica acceso denegado, puede que suusuario o password sean los incorrectos, u otro problema comn es que elservidor no este activado.

    Despus en la pantalla de datasources seleccione el origen Reportes, aunque por default se selecciona el recin creado.

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

    Creando el Reporte

    Ya creado nuestro proyecto, disearemos nuestro reporte como se indica:

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

    Creando el Reporte

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

    Si por algn error elimino alguna que no debera haberse borrado, puede volveractivarla desde le Inspector de Ireport.

  • 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 esttico y despus 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;

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

    Creando el Reporte

    Despliegue el nodo Fields del Reporte:

    Ahora seleccione uno por uno y arrstrelo 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.

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

    Creando el Reporte

    Para finalizar al diseo agregue a las bandas restantes lo siguiente:

    "" + $V{PAGE_NUMBER}

    Recuerde que los campos son de tipo Text Field y no estticos y que ademasel tipo de dato para Date() deber ser tipo Date.

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

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

    Error en la consulta?

    Al momento de realizar la consulta cometimos una equivocacin (adrede) yaque como mencionamos al principio el reporte deber recibir un parmetropara que se realice, en este caso recibir la matricula, as que lo que haremosprimero ser agregar el parmetro al reporte y despus 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 pngale el nombre quedesee, en este caso se llamara igual que el campodela tabla que nos servir en la condicin,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.

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

    Modificando la consulta

    Nuevamente abra el editor de consultas y modifquela como sigue:

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

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

    Agregando Libreras

    Enseguida procederemos a agregar las libreras necesarias para ejecutar elreporte y poder guardarlo en distintos formatos, desplegu el proyecto y sobrela carpeta libreras haga clic derecho y despus seleccione agregar JAR busquelas libreras y seleccinelas.

    Despus crearemos una clase de java que ser la encargada de crear y lanzar elreporte, en la siguientes pantalla se muestra todo el cdigo fuente.

  • 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

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

    IniciarReporte.java

    */ Se inicia la Superclase y su constructor ademas se establece la conexin*/

    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,"Conexin establecida");

    } catch (Exception ex){

    ex.printStackTrace();}

    }

  • 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);

    }

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

    IniciarReporte.java

    /* Se pasan los parmetros introducidos por el usuario*/

    //este es el parmetro, se pueden agregar ms parmetros//basta con poner mas parametro.putMap parametro = new HashMap();parametro.put("Matricula",matricula);

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

    //Se lanza el Viewer de Jasper, no termina aplicacin 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());}

    }

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

    IniciarReporte.java

    /* por ultimo se cierra la conexin*/

    public void cerrar(){

    try {

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

    ex.printStackTrace();}

    }}

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

    Creando la pantalla de opcin del reporte

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

    Despus solo aada un evento al botn , para ello seleccione el botn y hagadoble clic o inclyalo desde la paleta de propiedades en la ficha eventos.

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

    Creando la pantalla de opcin del reporte

    Ahora abra el cdigo fuente del frame y ajstelo como a continuacin semuestra:

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

    Ejecutando el reporte

    Pues bien hemos terminado, ahora solo ejecute la aplicacin y escrbale algn parmetro que tengaen la BD.

  • 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 adems de establecer contacto directoconmigo. Gracias y hasta pronto.

    http://ajdgeniz.wordpress.com

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

    Prximamente Virtualizacin

    Mac OS X, Windows XP y Solaris ejecutndose sobre Ubuntu 9.04

    2009-08-16T13:28:26-0500Javier Dominguez Geniz