Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Introduccin:
Se realizar la generacin de Reportes para una aplicacin basada JAVA, utilizando MySQL como nuestro motor de base
de datos predeterminado y lo conectaremos mediante el API JDBC (Java Data Base Connectivity). Se presentaran los
principales pasos para generar reportes sencillos, con filtros de bsqueda y reportes con grficos estadsticos. Para el
desarrollo del laboratorio se usara la librera de JasperReports / iReports.
commons-collections-3.2.1
commons-digester-2-1
commons-javaflow-20060411
commons-logging-1.2
jasperreports-5.6.1
itext2.1.7(Importante tener esta librera ya que es la encargada de generar nuestro reporte en PDF y otros formatos)
MySQLConnector para JAVA(mysql-connector-java-5.1.23-bin):este es nuestro puente JDBC que nos permitir la
conexin entre el servidor de base de datos y las pginas JSP( viene incluido en Netbeans).
Y para esta versin por supuesto necesitamos el respectivo PLUGIN para Netbeans.
3. Caso de Estudio
Para realizar este tutorial, por ahora solo utilizaremos una tabla, y nuestro reporte se generar a partir de recibir un parmetro,
para este sencillo caso recibir como parmetro la matrcula de un estudiante, y utilizaremos nica y exclusivamente el IReport
que instalaremos dentro de Netbeans.
Paso 1. Abra su Netbeans IDE, recuerde que este plugin solo se instala en versiones superiores a la 7.3.0, una vez abierto
haga clic en el men Tools y Seleccione Plugins:
Paso 2.
Paso 3. Ahora localice la ubicacin del archivo con extensin NBM y despus haga clic en el botn abrir (Archivos iReport-
5.6.0.nbm, jasperreports-components-plugin-5.6.0.nbm, jasperserver-plugin-5.6.0.nbm, y 1341985500_org-netbeans-
modules-swingapp.nbm).
Paso 4. Una vez que empiece la instalacin aparecer un Wizard que le guiar, 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 5.
Listo, nuestro IReport se encuentra Instalado, para finalizar haga clic en la pestaa Installed y busque el nuevo
complemento en la categora Tools
Como podr darse cuenta su Netbeans ha cambiado un poco de apariencia, ya que se agregaron varios componentes como por
ejemplo los orgenes de datos (datasources) de IREPORT, adems de las consolas de salida.
5. Creando la BD
Como primer paso crearemos la base de datos, puede crearla con algn asistente grfico 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:
6. Netbeans una vez creada la base de datos, abra Netbeans y cree un nuevo Proyecto como a continuacin se indica:
1. Dirjase al men File->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, finalice el asistente.
7. Como se indico anteriormente en la nueva versin de Netbeans ya puede indicarle al IDE que se tratara de una aplicacin
de base de datos, si eligi esta opcin siga los siguientes pasos:
1.Una vez que elijo la aplicacin de base de datos, en la siguiente pantalla deber elegir Nueva Conexin con Base de
datos
Elija la opcin MySQL y configrela como lo muestra la siguiente imagen, escriba su nombre de usuario correspondiente y su
password, en caso de no tener, puede dejarlo en blanco.
Si la conexin se realiz con xito, la tabla ya fue extrada y los campos agregados, ahora haga clic en siguiente
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.
Antes de hacer nuestro reporte crearemos un origen de datos para establecer nuestra conexin y que nuestro reporte contenga
datos reales de la BD.
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 data sources seleccione el origen Reportes, aunque por default se selecciona el recin creado.
Disee el reporte a su gusto, en este caso solo utilizaremos 4 bandas que son: title, page header, Detail, Page Footer. Las dems
puede eliminar las 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 el Inspector de Ireport.
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 Inspectory seleccione Edit Query.
Ahora seleccione uno por uno y arrstrelo a la banda detail, esto nos evitar problemas con el tipo de datos ya que cada tipo de
dato en MySQL tiene un equivalente en JAVA y esto al realizarlo de esta manera se realizara en automtico, por ejemplo, el
VARCHAR equivale a un String, el Int a INT ,etc. El reporte habr tomado una forma como se ve en la siguiente figura
Simplemente arraste los controles Current Date y Page X of Y desde el panel de iReport
El reporte deber recibir un ahora un parmetro para que se realice, en este caso recibir la matricula, as 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, haga 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 de la tabla que nos servir
en la condicin, seleccione el tipo de dato que corresponda. En donde dice valor de default puede escribirle alguno para probar y
este valor deber ir encerrado entre comillas dobles
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.
Despus crearemos una clase java que ser la encargada de crear y lanzar el reporte, en la siguiente pantalla se muestra todo el
cdigo fuente.
package com.reporte;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
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 realizar 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
Ahora abra el cdigo fuente del frame y ajstelo como a continuacin se muestra:
Ahora solo ejecute la aplicacin y escrbale algn parmetro que tenga en la BD.
Parte 2. Integracin del Reporte a una aplicacin Web.
En Netbeans Cree un nuevo proyecto web con Servidor de Aplicaciones Glassfish y plataforma JEE 7.
Cree un nuevo reporte similar al creado en el ejercicio anterior. Lo novedoso es que se utilizar el control de Cdigo de Barras
para generar el cdigo de la matricula y posteriormente leerlo en a travs de un lector de cdigo de barras. Para eso en la paleta
del iReport seleccione el control Barcode.
Para este ejemplo usaremos el cdigo de barras Code128 y la librera Barbecue (Proporcionada por el docente)
Ahora seleccin el control dentro del reporte y en las propiedades coloque los siguientes elementos:
Para asegurarse que el cdigo de barras genera correctamente el dato de la matricula puede instalar en su Smartphone un
aplicativo lector de cdigo de barras como Barcode Scanner.
Una vez comprobado el correcto funcionamiento del reporte proceda a crear dos pginas JSP (buscar.jsp y reporte.jsp)
En la pgina de respuesta reporte.jsp se tendr la lgica necesaria para enlazar el visor de JasperReport y hacer la conversin
automtica a PDF a travs del respectivo formato MIME.
Asegrese de compilar el reporte correctamente mediante la siguiente opcin:
Para mayor facilidad coloque los archivos del reporte en la siguiente ruta:
Haga el despliegue del proyecto web hacia glassfish y luego ejectelo en el navegador web.
Observe que el reporte esta generado en el formato PDF.
En este ejercicio realizaremos la creacin de una aplicacin JAVA que permita generar un grafico en barras de los productos ms
vendidos en un periodo de tiempo dado.
Crearemos un nuevo Java App que contenga la siguiente estructura (Asegrese de agregar las libreras respectivas).
Cree un reporte vaco (asegrese de crear un nuevo data source hacia su BD y llmelo Reporte 2) y agregue dos parmetros que
permitirn filtrar el reporte FECHAINICIAL y FECHAFINAL en el panel de iReport
Ahora cree un nuevo query adicionando a la consulta de prueba los parmetros $P{FECHAINICIAL} y $P{FECHAFINAL} en la clausula
del WHERE de la consulta SQL.
Ahora disee el reporte de la siguiente forma, utilizando el componente Chart para generar los grficos estadsticos.
Al arrastrar el componente aparecer varias opciones de grficos. En este ejemplo usaremos Bar 3D.
Por el momento dejaremos las opciones que aparecen por defecto (En el asistente haremos click en Finish). Ahora Ubique el
grfico dndole el tamao que desee. Haga click despus con el botn derecho del ratn y elija la opcin Chart Data.
En la ventana Chat Details haga click en el botn Add.
1. Tomando la Base de datos de la tienda, realice la factura de venta en PDF, teniendo en cuenta que se har una aplicacin
web donde se ingresar como parmetros el nmero de la factura. Tenga en cuenta el siguiente diseo:
2. Disee un reporte estadstico del total de ventas realizadas segn un rango de fechas dado.
3. Disee un reporte en diagrama de barras que presente los 5 clientes que ms facturan.
4. Disee un reporte que presente por cada factura el nmero de productos vendidos y el total facturado.
5. Cree una nueva base de datos en MySQL teniendo en cuenta el siguiente script SQL
--
-- Estructura de tabla para la tabla 'estudiante'
--
CREATE TABLE estudiante (
dni varchar(12) NOT NULL,
nombre varchar(32) default NULL,
email varchar(32) default NULL,
celular varchar(12) default NULL,
PRIMARY KEY (dni)
) ENGINE= InnoDB DEFAULT CHARSET=utf8;
--
-- Volcar la base de datos para la tabla 'estudiante'
--
INSERT INTO estudiante VALUES ('EST-00000001', 'Fernando Coco Cuadrado ',
'fernando2@yahoo.es', '080043332112');
INSERT INTO estudiante VALUES ('EST-00000002', 'Tomas Turbado ',
'loco_ton@mixmail.com', '800-33333-98');
INSERT INTO estudiante VALUES ('EST-00000003', 'Ramona Ponte Alegre ',
'triste_esta@gmail.com', '500-3223-122');
INSERT INTO estudiante VALUES ('EST-00000004', 'Pascual Conejo Enamorado ',
'conejo_rabioso@hotmail.com', '500-3333-001');
INSERT INTO estudiante VALUES ('EST-00000005', 'Miren Perez ',
'elcochinote@facebook.com', '500-33-12199');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla 'materia'
--
--
-- Volcar la base de datos para la tabla 'materia'
--
INSERT INTO materia VALUES ('SIS-009', 'Introduccin a la programacin', 'A1',
'Mircoles de 06:00 a 09:00');
INSERT INTO materia VALUES ('TEL-500', 'Teleinformtica', 'B32', 'Jueves de 18:00 a
19:00');
INSERT INTO materia VALUES ('SIS-200', 'Linux', 'B12', 'Lunes de 14:00 a 16:00');
INSERT INTO materia VALUES ('SIS-234', 'Metodologas de la Informacin', 'C32',
'Martes de 16:00 a 18:00');
INSERT INTO materia VALUES ('MAT-280', 'Estadstica Descriptiva', 'C15', 'Viernes de
09:00 a 11:00');
INSERT INTO materia VALUES ('FIS-200', 'Fsica Bsica IV', 'LAB-02', 'Viernes de
14:00 a 17:00');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla 'matricula'
--
CREATE TABLE matricula (
dni varchar(12) NOT NULL,
idmateria varchar(7) NOT NULL
) ENGINE= InnoDB DEFAULT CHARSET=utf8;
--
-- Volcar la base de datos para la tabla 'matricula'
--
https://community.jaspersoft.com/wiki/subreports-jaspersoft-studio
https://community.jaspersoft.com/wiki/creating-charts-and-subreports-jaspersoft-studio