Sie sind auf Seite 1von 9

Jasper Reports: Plugin iReport en Netbeans 6.9.

1
En el desarrollo de ciertos sistemas los reportes juegan un
papel fundamental. Son la base para la toma de desiciones, hoy
vamos a ver como se utiliza iReport en este caso como plugin en
el entorno Netbeans 6.9.1.
Herramientas utilizadas
Netbeans 6.9.1 + Plugin iReport
Postgres 1.12.1
Bueno instalado postgres y netbeans, vamos a iniciar instalando
el plugin el mismo se descarga en la siguiente pgina:
http://jasperforge.org/projects/ireport , luego damos clic
Download iReport Now para descargar el plugin.

Para la instalacin podemos seguir el siguiente video:

Si todo salio bien vamos a configurar algunas cosas, vamos a


herramientas luego opciones, en la opcin iReport donde dice
Classpath agregamos el driver para java de nuestra base de datos
en mi caso era el de postgres. Ahi mismo en Viewers
seleccionamos para los formatos deseados los programas a
utilizar, ejemplo para pdf en micaso selecciono el programa
Foxit Reader.

Antes de crear un nuevo proyecto vamos a crear la base de datos


en este caso se va a llamar test y vamos a suponer que tiene que
ver con la venta de productos las tablas seran tienen la
siguiente estructura:
En mi caso las tablas estan en un esquema llamado test-report.
CREATE TABLE "test-report".tventa
(
"cId_producto" integer NOT NULL,
"cFecha_venta" date NOT NULL,
CONSTRAINT pk_venta PRIMARY KEY ("cId_producto",
"cFecha_venta"),
CONSTRAINT fk_venta FOREIGN KEY ("cId_producto")
REFERENCES "test-report".tproducto ("cId") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)

CREATE TABLE "test-report".tproducto


(
"cId" integer NOT NULL,
"cDescripcion" character varying(50),
"cPrecio" numeric,
CONSTRAINT pk_producto PRIMARY KEY ("cId")
)
Nota: las tablas no tratan de resolver un problema son solo de
ejemplo.
La idea es hacer un reporte de los productos vendidos por mes en
un ao dado.
Lo primero que vamos hacer es crear el proyecto en netbeans,
hecho esto podemos empezar a crear el reporte. Creado el
proyecto, creamos un nuevo archivo nos presentara la siguiente
ventana:
Nota: iReport nos permite ya sea basarnos en una plantilla de
reporte como crear una propia, para esta ocasin vamos a
basarnos en una que trae iReport.

Nos presenta varias opciones para la creacin de un reporte, en


este caso vamos a seleccionar Report Wizard, luego seleccionamos
una plantilla presionamos next, le asignamos un nombre y el
paquete en donde lo vamos a localizar, despues de esto nos
pedira que seleccionemos la conexion presionamos new,
seleccionamos Database JDBC connection, hecho esto nos
presentara esta ventana:

En Name es el nombre de la conexin en mi caso puse


testconnection, el JDBC es el driver de java para nuestra base
de datos, el JDBC URL lo genera el solo le tenemos que poner el
Server Address y el nombre de nuestra base de datos y por ultimo
ponemos el Username y password. Para probar si esta bien podemos
darle en test y si sale bien salvamos.
Ahora volvemos a la sigiuente pantalla, aqui es donde vamos a
colocar nuestra consulta sql.

Para tener ms claro la consulta retorna la venta de productos


por mes, como se muestra a continuacin:

Presionamos next y seleccionamos los campos que queremos mostrar


en el reporte. Seleccionamos como queremos agruparlo en mi caso
va a hacer por mes.
Ahora ya tenemos listo el reporte para verlo damos clic en
nombrereporte.jrxml, nos mostrara en la pestaa Diseo podemos
dar clic en Vista previa y ver como se va a mostrar el reporte.
Para configurar la vista previa podemos ir a Run, Report Preview
y seleccionamos el formato en que se va a presentar el reporte.
Como les dije anteriormente la idea es mostrar un reporte en el
cual dado un ao muestre las ventas de los diferentes productos
en cada mes, como vimos en la consulta se muestra pero el ao
esta que sea igual al 2003 para que en el reporte se pueda
cambiar el ao segun lo que se solicite, vamos a aadir un
parmetro:

(En caso que no nos aparezca el Report Inspector basta ir a


Search, poner Report Inspector y enter.)
Aadido el parmetro le cambiamos el nombre, en propiedades del
parmetro le ponemos un tipo en mi caso sera Double y le ponemos
uno por defecto en mi caso 2003.

Ahora vamos a editar la consulta del reporte clic derecho en


null, Edit Query.

Arrastramos la varible en donde esta en mi caso el 2003.

Como tenemos listo el reporte podemos crear una clase en mi caso


la llame Reporte.java la cual es la que generara el reporte y lo
mostrara.
Primero aadimos a la libreria de nuestro proyecto una nueva en
la cual vamos a ingresar diferentes .jar en esta direccion
podemos ver donde se saca cada uno de ellos

http://www.mygnet.net/articulos/java/introduccion_a_jasperreport
s_e_ireport_primera_parte.301
Los nombres de los .jar que yo manejo son:

Ahora importamos a la clase reporte lo siguiente:


import
import
import
import
import

java.sql.Connection;
java.sql.DriverManager;
java.sql.SQLException;
java.util.HashMap;
java.util.Map;

import
import
import
import
import
import
import
import

javax.swing.JOptionPane;
net.sf.jasperreports.engine.JasperFillManager;
net.sf.jasperreports.engine.JasperPrint;
net.sf.jasperreports.engine.JasperReport;
net.sf.jasperreports.engine.JasperExportManager;
net.sf.jasperreports.engine.JasperCompileManager;
java.awt.Desktop;
java.io.File;

Creamos el constructor en mi caso se crea la conexin aqui mismo


(lo ideal es crear una clase conexin a parte pero lo haremos en
el constructor)
public static Connection conexion = null;
//Constructor que conecta a la base de datos en postgres
public Reporte(){
String baseDatos =
"jdbc:postgresql://localhost:5432/test";
String usuario = "postgres";
String clave = "postgres";

try{
Class.forName("org.postgresql.Driver").newInstance();
conexion =
DriverManager.getConnection(baseDatos,usuario,clave);
}//Fin del try
catch (ClassNotFoundException cnxex){
System.err.println("Fallo al cargar JDBC");
cnxex.printStackTrace();
System.exit(1);
}//Fin del catch1
catch (SQLException sqlex){
System.err.println("No se pudo conectar a BD");
sqlex.printStackTrace();
}//Fin del catch2
catch (java.lang.InstantiationException sqlex){
System.err.println("Imposible Conectar");
sqlex.printStackTrace();
}//Fin del catch3
catch (Exception sqlex){
System.err.println("Imposible Conectar");
sqlex.printStackTrace();
}//Fin del catch4
}//Fin de constructor

Ahora creamos un mtodo para que se ejecute y nos muestre el


reporte:
public void runReport(double ao) // se recibe el tipo de dato
que se asigno al parametro del reporte
{
//La Ruta de nuestro reporte
String filejasper="C:\\Documents and
Settings\\Administrador\\Mis
documentos\\NetBeansProjects\\testJasperReport\\src\\testjasperr
eport\\testreportblog.jrxml";
try
{
//cargamos parametros del reporte
Map parameters = new HashMap();
parameters.put("ao",ao);
JasperReport report =
JasperCompileManager.compileReport(

filejasper);
JasperPrint print =
JasperFillManager.fillReport(report, parameters, conexion);//si
se quiere que no reciba parametros o se quiera que publique el
por defecto, se pone null en lugar de parameters
// Exporta el informe a PDF
//Para exportar en otro formato, puede ser html:
JasperExportManager.exportReportToHtmlFile(filejasper)
JasperExportManager.exportReportToPdfFile(print,
"C:\\Documents and
Settings\\Administrador\\Mis
documentos\\NetBeansProjects\\testJasperReport\\src\\testjasperr
eport\\testreportblog.pdf");
//Mostrar nuestro reporte en Adobe Reader o
Foxit Reader

File path = new File ("C:\\Documents and


Settings\\Administrador\\Mis
documentos\\NetBeansProjects\\testJasperReport\\src\\testjasperr
eport\\testreportblog.pdf");
Desktop.getDesktop().open(path);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e.toString(),"Error",JOptionP
ane.WARNING_MESSAGE);
}
}
Para finalizar vamos a llamar a nuestra clase desde la clase
main del proyecto as:
public class Main {
public static void main(String[] args) {
Reporte mireport = new Reporte();
double ao=2003;
mireport.runReport(ao);
}
}

Al final si todo salio bien podemos ver nuestro reporte parecido


a este:

Es claro que el reporte se puede modificar (como cambiar


titulos, tipos de letra, etc) as como la consulta del reporte,
pero la intencin era aprender sobre como realizar reportes en
java, y me parece que lo proporcionado es muy util, espero sea
de ayuda para los interesados en este tema.

Das könnte Ihnen auch gefallen