Download Aprenda-Reportes-Con-Netbeans-IREPORT-y

Document related concepts
no text concepts found
Transcript
Aprenda
plugin de
con ayuda del
en N Diapositivas
Por:
Domínguez Geniz Amalio Javier
< [email protected] >
< [email protected] >
http://ajdgeniz.wordpress.com
25/05/2009
Geniz v. 1.0 Update 1
1
De la Colección …
Aprenda en N Diapositivas
Este Manual es la primera actualización de mi tutorial pasado Titulado “Tutorial para la
Generació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 pasada
ahora incluyo el famoso plugin de IReport para Netbeans, además trataré de explicar y de
resolver algunos problemas que tuvo el código pasado, en esta actualización encontrará que
ahora se generará a partir de una Interfaz Grafica hecha con el Swing de JAVA, Otra gran
actualización es que ahora recibirá un Parámetro para generar solo el que deseemos y lo mejor
es que haremos todo solo con Netbeans; espero próximamente introducir otro tema importante
como lo es la Graficación con JFreeChar, espero les siga gustando y si tienen duda no dejen de
escribirme a los correos electrónicos de la portada.
Las
Marcas
y
Logotipos
Mostrados,
son
marcas
registradas de sus respectivas
empresas en México y Otros
Países.
25/05/2009
Javier
Dominguez
Geniz
Geniz 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. Introducción.
En este Manual mostraré como Generar Reportes para una aplicación basada
en el SWING de JAVA, utilizaremos por supuesto a MySQL como nuestro
motor de base de datos predeterminado aunque también 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 través de una conexión ODBC. Para empezar estableceremos nuestro
entorno de trabajo:
25/05/2009
Geniz v. 1.0 Update 1
3
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:
25/05/2009
Geniz v. 1.0 Update 1
4
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 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 conexión entre el servidor de base
de 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
25/05/2009
Geniz v. 1.0 Update 1
5
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
25/05/2009
Geniz v. 1.0 Update 1
6
4. Caso de Estudio
Para realizar este tutorial, por ahora solo utilizaremos una tabla, y nuestro
reporte se generara a partir de recibir un parámetro, si recuerda en el tutorial
pasado lo generábamos a partir de una vista y no recibía parámetros, para
este sencillo caso recibirá como parámetro 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 sección para verificar el otro reporte.
25/05/2009
Geniz v. 1.0 Update 1
7
Instalación del PLUGIN
Para realizar este tutorial, por ahora solo utilizaremos una tabla, y nuestro
reporte se generara a partir de recibir un parámetro, si recuerda en el tutorial
pasado lo generábamos a partir de una vista y no recibía parámetros, para
este sencillo caso recibirá como parámetro 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 sección 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 2
Ahora haga clic en la
pestaña Downloaded
y seguidamente en el
botón Add Plugins
25/05/2009
Geniz v. 1.0 Update 1
9
Paso 3
Ahora localice la ubicación
del archivo con extensión
NBM y después haga clic
en el botón abrir
Paso 2
A
continuación
nuestro complemento
estará
listo
para
instalarse, notara que
aparece la descripción
en la parte derecha,
ahora pulse el botón
Install
25/05/2009
Geniz v. 1.0 Update 1
10
Paso 4
Una vez que empiece la
instalación aparecerá un
Wizard que le guiara, solo
haga clic en siguiente y
acepte los términos de la
licencia.
Existe
la
posibilidad
de
que
Netbeans no lo pueda
validar, para que la
instalación continúe solo
haga clic en continue.
25/05/2009
Paso 2
Geniz v. 1.0 Update 1
11
Paso 5
Listo, nuestro IReport se encuentra Instalado, para finalizar haga clic en la
pestaña Installed y busque el nuevo complemento el categoría 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
orígenes de datos
(data sources) de
IREPORT, además de
las consolas de salida.
25/05/2009
Geniz v. 1.0 Update 1
13
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 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));
25/05/2009
Geniz v. 1.0 Update 1
14
Iniciando Netbeans
Una vez creada la base de datos, abra Netbeans y cree un nuevo Proyecto como
a continuación se indica:
1.
2.
3.
Diríjase al menú archivo -> New Project
Después elija Java -> Desktop Application
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 lo
contrario elija la opción básica, en Netbeans 6 basta con esos parámetros,
finalice el asistente.
25/05/2009
Geniz v. 1.0 Update 1
15
Configurando Netbeans 7
Como se indico anteriormente en la nueva versión de Netbeans ya puede
indicarle al IDE q se tratara de una aplicación de base de datos, si eligió esta
opción siga los sig. Pasos:
1.
Una vez que elijo la aplicación de base de datos, en la sig., pantalla
deberá elegir “Nueva Conexión con Base de datos”(en este caso Netbeans
esta en español)
25/05/2009
Geniz v. 1.0 Update 1
16
Configurando Netbeans 7
Elija la opción MySQL y configúrela 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 7
Si la conexión se realizo con éxito, la tabla ya fue extraída y los campos
agregados, ahora haga clic en siguiente.
25/05/2009
Geniz v. 1.0 Update 1
18
Configurando Netbeans 7
Por ultimo haga clic en terminar
25/05/2009
Geniz v. 1.0 Update 1
19
Configurando Netbeans 7
Como se dio cuenta nos abrió un proyecto de ejemplo, puede trabajar sobre
este mismo y agregar los componentes que añadiremos en los siguientes pasos
o puede continuar con los siguientes pasos que se mencionaran a continuación.
25/05/2009
Geniz v. 1.0 Update 1
20
Origen de Datos
Antes de hacer nuestro reporte crearemos un origen de datos para establecer
nuestra 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”
25/05/2009
Geniz v. 1.0 Update 1
21
Origen de Datos
Ahora complete los parámetros pedidos, cuando los tenga haga clic en el botón
test, si la conexión se realiza con éxito haga clic en save, de lo contrario corrija
los que estén mal, si el mensaje de error indica acceso denegado, puede que su
usuario o password sean los incorrectos, u otro problema común es que el
servidor no este activado.
Después en la pantalla de
datasources seleccione el
origen Reportes, aunque por
default se selecciona el
recién creado.
25/05/2009
Geniz v. 1.0 Update 1
22
Creando el Reporte
Ya creado nuestro proyecto, diseñaremos nuestro reporte como se indica:
25/05/2009
Geniz v. 1.0 Update 1
23
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 clic
derecho sobre la misma y seleccionando Delete Band o estableciendo el valor 0
en las propiedades del lado derecho.
Si por algún error elimino alguna que no debería haberse borrado, puede volver
activarla desde le Inspector de Ireport.
25/05/2009
Geniz v. 1.0 Update 1
24
Creando el Reporte
Agregue a la banda Detail los campos de nuestra tabla, no es necesario agregar
un campo estático y después 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 Reporte
Despliegue el nodo Fields del Reporte:
Ahora seleccione uno por uno y arrástrelo 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 Reporte
Para finalizar al diseño 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 estáticos 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 equivocación (adrede) ya
que como mencionamos al principio el reporte deberá recibir un parámetro
para que se realice, en este caso recibirá la matricula, así que lo que haremos
primero será agregar el parámetro al reporte y después 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 póngale el nombre que
desee, en este caso se llamara igual que el campo
dela tabla que nos servirá en la condición,
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 consulta
Nuevamente abra el editor de consultas y modifíquela como sigue:
Listo nuestro reporte ha sido generado, recuerde que el archivo jasper y el
jrxml están almacenados en la carpeta del proyecto.
25/05/2009
Geniz v. 1.0 Update 1
29
Agregando Librerías
Enseguida procederemos a agregar las librerías necesarias para ejecutar el
reporte y poder guardarlo en distintos formatos, desplegué el proyecto y sobre
la carpeta librerías haga clic derecho y después seleccione agregar JAR busque
las librerías y selecciónelas.
Después crearemos una clase de java que será la encargada de crear y lanzar el
reporte, en la siguientes pantalla se muestra todo el código 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 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();
}
}
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 parámetros introducidos por el usuario*/
//este es el parámetro, se pueden agregar más parámetros
//basta con poner mas parametro.put
Map parametro = new HashMap();
parametro.put("Matricula",matricula);
//Reporte diseñado y compilado con iReport
JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport,parametro,conn);
//Se lanza el Viewer de Jasper, no termina aplicación 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 conexión*/
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 opción del reporte
Ya creado nuestro proyecto, reporte y la clase que lo lanzara procederemos a
agregar un nuevo formulario como se muestra cuya función será recoger la
matricula, que es el parámetro que recibirá para realizare la consulta y ejecutar
el reporte:
Después solo añada un evento al botón , para ello seleccione el botón y haga
doble clic o inclúyalo desde la paleta de propiedades en la ficha eventos.
25/05/2009
Geniz v. 1.0 Update 1
36
Creando la pantalla de opción del reporte
Ahora abra el código fuente del frame y ajústelo como a continuación se
muestra:
25/05/2009
Geniz v. 1.0 Update 1
37
Ejecutando el reporte
Pues bien hemos terminado, ahora solo ejecute la aplicación y escríbale algún parámetro que tenga
en la BD.
25/05/2009
Geniz v. 1.0 Update 1
38
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 además de establecer contacto directo
conmigo. Gracias y hasta pronto.
http://ajdgeniz.wordpress.com
25/05/2009
Geniz v. 1.0 Update 1
39
Próximamente… Virtualización
25/05/2009
Mac OS X, Windows XP y Solaris ejecutándose sobre Ubuntu 9.04
Geniz v. 1.0 Update 1
40