Está en la página 1de 40

Aprenda con ayuda del

plugin de
en N Diapositivas
Por:
Domnguez Geniz Amalio Javier
< ajdgeniz@hotmail.com >
< ajdgeniz@yahoo.com.mx >
http://ajdgeniz.wordpress.com
25/05/2009 1 Geniz v. 1.0 Update 1
Este 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.
25/05/2009 2 Geniz v. 1.0 Update 1
Las Marcas y Logotipos
Mostrados, son marcas
registradas de sus respectivas
empresas en Mxico y Otros
Pases.
De la Coleccin
Aprenda en N Diapositivas
Javier
Dominguez
Geniz
Firmado digitalmente por Javier
Dominguez Geniz
Nombre de reconocimiento (DN):
cn=Javier Dominguez Geniz,
o=Geniz SWF, ou=Geniz SWF,
email=ajdgeniz@hotmail.com,
c=MX
Fecha: 2009.08.16 13:28:26 -05'00'
25/05/2009 3 Geniz v. 1.0 Update 1
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 4 Geniz 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 5 Geniz v. 1.0 Update 1
3. Libreras
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 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.0
25/05/2009 6 Geniz 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 7 Geniz v. 1.0 Update 1
4. Caso de Estudio
Para 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 8 Geniz v. 1.0 Update 1
Instalacin del PLUGIN
Para 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 9 Geniz v. 1.0 Update 1
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 2
Ahora haga clic en la
pestaa Downloaded
y seguidamente en el
botn Add Plugins
25/05/2009 10 Geniz v. 1.0 Update 1
Paso 3
Ahora localice la ubicacin
del archivo con extensin
NBM y despus haga clic
en el botn abrir
Paso 2
A continuacin
nuestro complemento
estar listo para
instalarse, notara que
aparece la descripcin
en la parte derecha,
ahora pulse el botn
Install
25/05/2009 11 Geniz v. 1.0 Update 1
Paso 4
Una 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 12 Geniz v. 1.0 Update 1
Paso 5
Listo, nuestro IReport se encuentra Instalado, para finalizar haga clic en la
pestaa Installed y busque el nuevo complemento el categora Tools
25/05/2009 13 Geniz v. 1.0 Update 1
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 14 Geniz v. 1.0 Update 1
Creando la Base de Datos
Como 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 15 Geniz v. 1.0 Update 1
Iniciando Netbeans
Una vez creada la base de datos, abra Netbeans y cree un nuevo Proyecto como
a continuacin se indica:
1. Dirjase al men archivo -> New Project
2. Despus elija Java -> Desktop Application
3. 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 16 Geniz v. 1.0 Update 1
Configurando Netbeans 7
Como 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 17 Geniz v. 1.0 Update 1
Configurando Netbeans 7
Elija 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 18 Geniz v. 1.0 Update 1
Configurando Netbeans 7
Si la conexin se realizo con xito, la tabla ya fue extrada y los campos
agregados, ahora haga clic en siguiente.
25/05/2009 19 Geniz v. 1.0 Update 1
Configurando Netbeans 7
Por ultimo haga clic en terminar
25/05/2009 20 Geniz v. 1.0 Update 1
Configurando Netbeans 7
Como 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 21 Geniz v. 1.0 Update 1
Origen de Datos
Antes 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 22 Geniz v. 1.0 Update 1
Origen de Datos
Ahora 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 23 Geniz v. 1.0 Update 1
Creando el Reporte
Ya creado nuestro proyecto, disearemos nuestro reporte como se indica:
25/05/2009 24 Geniz 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 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 25 Geniz v. 1.0 Update 1
Creando el Reporte
Agregue 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 26 Geniz 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 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 27 Geniz 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 ademas
el tipo de dato para Date() deber ser tipo Date.
"Page " + $V{PAGE_NUMBER} + " of "
25/05/2009 28 Geniz v. 1.0 Update 1
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.
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.
25/05/2009 29 Geniz 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 el
jrxml estn almacenados en la carpeta del proyecto.
25/05/2009 30 Geniz v. 1.0 Update 1
Agregando Libreras
Enseguida 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 31 Geniz 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 32 Geniz 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 33 Geniz 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 34 Geniz 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.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 35 Geniz 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 36 Geniz v. 1.0 Update 1
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 37 Geniz v. 1.0 Update 1
Creando la pantalla de opcin del reporte
Ahora abra el cdigo fuente del frame y ajstelo como a continuacin se
muestra:
25/05/2009 38 Geniz v. 1.0 Update 1
Ejecutando el reporte
Pues bien hemos terminado, ahora solo ejecute la aplicacin y escrbale algn parmetro que tenga
en la BD.
25/05/2009 39 Geniz v. 1.0 Update 1
Agradecimientos
Ojala 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 40 Geniz v. 1.0 Update 1
Prximamente Virtualizacin
Mac OS X, Windows XP y Solaris ejecutndose sobre Ubuntu 9.04

También podría gustarte