Aprenda Reportes Con Netbeans, IREPORT y MYSQL en N Diapositivas

download Aprenda Reportes Con Netbeans, IREPORT y MYSQL en N Diapositivas

of 40

Transcript of Aprenda Reportes Con Netbeans, IREPORT y MYSQL en N Diapositivas

Aprenda plugin de

con ayuda delen N DiapositivasPor: Domnguez Geniz Amalio Javier < [email protected] > < [email protected] >http://ajdgeniz.wordpress.com

25/05/2009

Geniz v. 1.0 Update 1

1

De la Coleccin Aprenda en N DiapositivasEste Manual es la primera actualizacin de mi tutorial pasado Titulado Tutorial para la Generacin 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 pasada ahora incluyo el famoso plugin de IReport para Netbeans, adems tratar de explicar y de resolver algunos problemas que tuvo el cdigo pasado, en esta actualizacin encontrar que ahora se generar a partir de una Interfaz Grafica hecha con el Swing de JAVA, Otra gran actualizacin es que ahora recibir un Parmetro para generar solo el que deseemos y lo mejor es que haremos todo solo con Netbeans; espero prximamente introducir otro tema importante como lo es la Graficacin con JFreeChar, espero les siga gustando y si tienen duda no dejen de escribirme a los correos electrnicos de la portada.

Las Marcas y Logotipos Mostrados, son marcas registradas de sus respectivas empresas en Mxico y Otros Pases.25/05/2009

Javier Dominguez GenizGeniz v. 1.0 Update 1

Firmado digitalmente por Javier Dominguez Geniz Nombre de reconocimiento (DN): cn=Javier Dominguez Geniz, o=Geniz SWF, ou=Geniz SWF, [email protected], c=MX Fecha: 2009.08.16 13:28:26 -05'00'

2

1. Introduccin.En este Manual mostrar como Generar Reportes para una aplicacin basada en el SWING de JAVA, utilizaremos por supuesto a MySQL como nuestro motor de base de datos predeterminado aunque tambin funcionaria con una base de datos de PostgreSQL ya que lo conectaremos mediante JDBC (Java DataBase Connectivity) y por supuesto funcionaria bien con SQL Server, Oracle u otro a travs de una conexin ODBC. Para empezar estableceremos nuestro entorno de trabajo:

25/05/2009

Geniz v. 1.0 Update 1

3

2. Herramientas para el DesarrolloNetbeans 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 Geniz v. 1.0 Update 1 4

3. Librerascommons-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 librera ya que es la encargada de generar nuestro reporte en PDF y otros formatos) MySQL Connector para JAVA (mysql-connector-java-5.0.7-bin): este es nuestro puente JDBC que nos permitir la conexin entre el servidor de base de 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.025/05/2009 Geniz v. 1.0 Update 1 5

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

Geniz v. 1.0 Update 1

6

4. Caso de EstudioPara realizar este tutorial, por ahora solo utilizaremos una tabla, y nuestro reporte se generara a partir de recibir un parmetro, si recuerda en el tutorial pasado lo generbamos a partir de una vista y no reciba parmetros, para este sencillo caso recibir como parmetro la matricula de un estudiante, y utilizaremos nica y exclusivamente el IReport que instalaremos dentro de Netbeans, si lo desea puede consultar el manual anterior disponible en esta misma seccin para verificar el otro reporte.

25/05/2009

Geniz v. 1.0 Update 1

7

Instalacin del PLUGINPara realizar este tutorial, por ahora solo utilizaremos una tabla, y nuestro reporte se generara a partir de recibir un parmetro, si recuerda en el tutorial pasado lo generbamos a partir de una vista y no reciba parmetros, para este sencillo caso recibir como parmetro la matricula de un estudiante, y utilizaremos nica y exclusivamente el IReport que instalaremos dentro de Netbeans, si lo desea puede consultar el manual anterior disponible en esta misma seccin para verificar el otro reporte.

25/05/2009

Geniz v. 1.0 Update 1

8

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

Paso 2Ahora haga clic en la pestaa Downloaded y seguidamente en el botn Add Plugins

25/05/2009

Geniz v. 1.0 Update 1

9

Paso 3Ahora localice la ubicacin del archivo con extensin NBM y despus haga clic en el botn abrir

Paso 2A continuacin nuestro complemento estar listo para instalarse, notara que aparece la descripcin en la parte derecha, ahora pulse el botn Install25/05/2009 Geniz v. 1.0 Update 1 10

Paso 4Una vez que empiece la instalacin aparecer un Wizard que le guiara, solo haga clic en siguiente y acepte los trminos de la licencia. Existe la posibilidad de que Netbeans no lo pueda validar, para que la instalacin contine solo haga clic en continue.

Paso 2

25/05/2009

Geniz v. 1.0 Update 1

11

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

25/05/2009

Geniz v. 1.0 Update 1

12

Ready !!!Como podr darse cuenta su Netbeans a cambiado un poco de apariencia, ya que se agregaron varios componentes como por ejemplo los orgenes de datos (data sources) de IREPORT, adems de las consolas de salida.

25/05/2009

Geniz v. 1.0 Update 1

13

Creando la Base de DatosComo primer paso crearemos la base de datos, puede crearla con algun asistente grafico o desde la terminal de MySQL, utilizaremos solo una tabla o puede seguir usando vistas si es que lo desea, a manera de ejemplo utilizaremos 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

Geniz v. 1.0 Update 1

14

Iniciando NetbeansUna vez creada la base de datos, abra Netbeans y cree un nuevo Proyecto como a continuacin se indica: 1. 2. 3. Dirjase al men archivo -> New Project Despus elija Java -> Desktop Application 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 lo contrario elija la opcin bsica, en Netbeans 6 basta con esos parmetros, finalice el asistente.

25/05/2009

Geniz v. 1.0 Update 1

15

Configurando Netbeans 7Como se indico anteriormente en la nueva versin de Netbeans ya puede indicarle al IDE q se tratara de una aplicacin de base de datos, si eligi esta opcin siga los sig. Pasos: 1. Una vez que elijo la aplicacin de base de datos, en la sig., pantalla deber elegir Nueva Conexin con Base de datos(en este caso Netbeans esta en espaol)

25/05/2009

Geniz v. 1.0 Update 1

16

Configurando Netbeans 7Elija la opcin MySQL y configrela como lo muestra la sig.. Imagen, escriba su nombre de usuario correspondiente y su password, en caso de no tener, puede dejarlo en blanco.

25/05/2009

Geniz v. 1.0 Update 1

17

Configurando Netbeans 7Si la conexin se realizo con xito, la tabla ya fue extrada y los campos agregados, ahora haga clic en siguiente.

25/05/2009

Geniz v. 1.0 Update 1

18

Configurando Netbeans 7Por ultimo haga clic en terminar

25/05/2009

Geniz v. 1.0 Update 1

19

Configurando Netbeans 7Como se dio cuenta nos abri un proyecto de ejemplo, puede trabajar sobre este mismo y agregar los componentes que aadiremos en los siguientes pasos o puede continuar con los siguientes pasos que se mencionaran a continuacin.

25/05/2009

Geniz v. 1.0 Update 1

20

Origen de DatosAntes de hacer nuestro reporte crearemos un origen de datos para establecer nuestra 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

Geniz v. 1.0 Update 1

21

Origen de DatosAhora complete los parmetros pedidos, cuando los tenga haga clic en el botn test, si la conexin se realiza con xito haga clic en save, de lo contrario corrija los que estn mal, si el mensaje de error indica acceso denegado, puede que su usuario o password sean los incorrectos, u otro problema comn es que el servidor no este activado.Despus en la pantalla de datasources seleccione el origen Reportes, aunque por default se selecciona el recin creado.

25/05/2009

Geniz v. 1.0 Update 1

22

Creando el ReporteYa creado nuestro proyecto, disearemos nuestro reporte como se indica:

25/05/2009

Geniz v. 1.0 Update 1

23

Creando el ReporteDisee 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 clic derecho sobre la misma y seleccionando Delete Band o estableciendo el valor 0 en las propiedades del lado derecho.

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

25/05/2009

Geniz v. 1.0 Update 1

24

Creando el ReporteAgregue a la banda Detail los campos de nuestra tabla, no es necesario agregar un campo esttico y despus uno de texto, para realizarlo con tan solo arrastrar y 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

Geniz v. 1.0 Update 1

25

Creando el ReporteDespliegue el nodo Fields del Reporte:

Ahora seleccione uno por uno y arrstrelo a la banda detail, esto nos evitara problemas con el tipo de datos ya que cada tipo de datos en MySQL tiene un equivalente en JAVA y esto al realizarlo de esta manera se realizara en automatico, por ejemplo, el VARCHAR equivale a un String, el Int a INT, etc. El reporte habara tomado una forma como la sig.

25/05/2009

Geniz v. 1.0 Update 1

26

Creando el ReportePara finalizar al diseo agregue a las bandas restantes lo siguiente:

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

"" + $V{PAGE_NUMBER}

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

25/05/2009

Geniz v. 1.0 Update 1

27

Error en la consulta?Al momento de realizar la consulta cometimos una equivocacin (adrede) ya que como mencionamos al principio el reporte deber recibir un parmetro para que se realice, en este caso recibir la matricula, as que lo que haremos primero ser agregar el parmetro al reporte y despus escribiremos nuevamente la consulta en su forma correcta. En el inspector del reporte encontrara un Nodo que dice parameters , clic derecho sobre el y seleccione agregar parameter.

25/05/2009

En la banda de propiedades pngale el nombre que desee, en este caso se llamara igual que el campo dela tabla que nos servir en la condicin, seleccione el tipo de dato que corresponda, en este caso el INT de MySQL corresponde al Integer de JAVA. En donde dice valor de default puede escribirle alguno para probar y este valor deber ir encerrado entre comillas dobles.Geniz v. 1.0 Update 1

28

Modificando la consultaNuevamente abra el editor de consultas y modifquela como sigue:

Listo nuestro reporte ha sido generado, recuerde que el archivo jasper y el jrxml estn almacenados en la carpeta del proyecto.25/05/2009 Geniz v. 1.0 Update 1 29

Agregando LibrerasEnseguida procederemos a agregar las libreras necesarias para ejecutar el reporte y poder guardarlo en distintos formatos, desplegu el proyecto y sobre la carpeta libreras haga clic derecho y despus seleccione agregar JAR busque las libreras y seleccinelas. Despus crearemos una clase de java que ser la encargada de crear y lanzar el reporte, en la siguientes pantalla se muestra todo el cdigo fuente.

25/05/2009

Geniz v. 1.0 Update 1

30

IniciarReporte.java// Importaciones de las librerias

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.*;

25/05/2009

Geniz v. 1.0 Update 1

31

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

Geniz v. 1.0 Update 1

32

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 Geniz v. 1.0 Update 1 33

IniciarReporte.java/* Se pasan los parmetros introducidos por el usuario*///este es el parmetro, se pueden agregar ms parmetros //basta con poner mas parametro.put Map parametro = new HashMap(); parametro.put("Matricula",matricula); //Reporte diseado y compilado con iReport JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport,parametro,conn); //Se lanza el Viewer de Jasper, no termina aplicacin al salir JasperViewer 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

Geniz v. 1.0 Update 1

34

IniciarReporte.java/* por ultimo se cierra la conexin*/

public void cerrar() { try { conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } } }

25/05/2009

Geniz v. 1.0 Update 1

35

Creando la pantalla de opcin del reporte

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

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

25/05/2009

Geniz v. 1.0 Update 1

36

Creando la pantalla de opcin del reporte

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

25/05/2009

Geniz v. 1.0 Update 1

37

Ejecutando el reportePues bien hemos terminado, ahora solo ejecute la aplicacin y escrbale algn parmetro que tenga en la BD.

25/05/2009

Geniz v. 1.0 Update 1

38

AgradecimientosOjala y les sirva este manual, recuerden que si tienen duda pueden escribirme a mi correo o visitar mi blog donde encontraran mas manuales y recursos adems de establecer contacto directo conmigo. Gracias y hasta pronto.

http://ajdgeniz.wordpress.com

25/05/2009

Geniz v. 1.0 Update 1

39

Prximamente Virtualizacin

25/05/2009

Mac OS X, Windows XP y Solaris ejecutndose sobre Ubuntu 9.04Geniz v. 1.0 Update 1

40