Ireport con ODBC

Informes con fuente de datos ODBC

Introducción

En este tutorial vamos a hablar de otra de las múltiples posibilidades que nos ofrece la generación de informes con JasperReport e iReport. En este caso vamos a ver como usar una fuente de datos o datasource ODBC para generar nuestros informes. En Adictosaltrabajo.com hay actualmente varios tutoriales relacionados con JasperReport e iReport que vienen muy bien si no se conocen dichas herramientas.

Entorno

Este tutorial está escrito usando este entorno:

  • Sistema operativo: Windows XP Pro.
  • JDK 1.5.0_10.
  • iReport 2.0.4
  • Microsoft Access 2007.

Ejemplo paso a paso

Creación y configuración del datasource

Lo primero que tenemos que hacer es crearnos, por ejemplo, una base de datos de Microsoft Access.

Aquí dejo el fichero utilizado para la realización de este tutorial para que os sirva de ayuda. tutorial-odbc.mdb.

Una vez hecha la base de datos tenemos que crearnos una fuente de datos ODBC en nuestra máquina. Para ello vamos a “Panel de control -> Herramientas administrativas -> Orígenes de datos ODBC“.

En esta ventana damos al botón “Agregar…” y elegimos el controlador de “Microsoft Access Driver“.

Damos el botón finalizar y nos aparecerá una nueva ventana, donde debemos dar un nombre a nuestro nuevo origen de datos, una descripción (opcional) y además tenemos que seleccionar nuestro fichero de base de datos haciendo click en el botón “Seleccionar…“.

Tras dar al “Aceptar” podremos ver ya nuestra nueva fuente de datos lista para ser utilizada.

NOTA: Hay que tener cuidado de no mover ni renombrar nuestro fichero *.mdb, porque sino nuestra fuente de origen de datos dejará de funcionar.

Creación y diseño del informe

Lo que tenemos que hacer a continuación es crear un informe de ejemplo y usar la nueva fuente de datos. Para ello nos vamos a ayudar de iReport.

Lo primero que tenemos que hacer es crear una nueva conexión / fuente de datos para nuestro informe (“Datos->Conexión / Fuente de datos“). Elegimos la opción de “Conexión Base Datos JDBC“.

En la siguiente ventana tenemos que configurar la nueva conexión, para ello elegimos como controlador JDBC el “sun.jdbc.odbc.JdbcOdbcDriver” y como JDBC URL debemos poner “jdbc:odbc:Tutorial“, donde “Tutorial” es el nombre del orígen de datos anteriormente creado. Guardamos y ya tenemos la nueva fuente de datos lista para ser usada en nuestros informes.

Ahora tenemos que crear una consulta para nuestro informe (“Datos -> Consulta de informe“), como por ejemplo esta.

Ya sólo nos queda diseñar nuestro informe como deseemos…

Ahora lo ejecutamos y vemos el resultado...

Ejecución en aplicación

Una vez creado y diseñado nuestro informe con un datasource ODBC vamos a integrarlo en una aplicación (J2EE, web, cliente/servidor, etc) ya que esta es la forma más común de utilización de los informes para nuestro negocio.

Para ello vamos a implementar una sencilla aplicación Java...

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.HashMap;

import java.util.Map;

import net.sf.jasperreports.engine.*;

public class test {

static Connection conn = null;

private static final String USER = "";

private static final String PASSWORD = "";

private static final String REPORT_PATH = "C:\\Alfonso\\tutoriales\\odbc\\test.jrxml";

private static final String REPORT_EXPORT_PATH = "C:\\Alfonso\\tutoriales\\odbc\\test.pdf";


public static void main(String[] args) {

// Cargamos el driver JDBC/ODBC

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

} catch (ClassNotFoundException e) {

System.out.println("[error] Driver MySQL JDBC no encontrado");

System.exit(1);

}

try {

conn = DriverManager.getConnection("jdbc:odbc:Tutorial", USER,PASSWORD);

} catch (SQLException e) {

System.out.println("[error] Error de conexión: " + e.getMessage());

System.exit(2);

}

try {

Map parameters = new HashMap();

// Compilamos el informe jrxml

JasperReport report = JasperCompileManager.compileReport(REPORT_PATH);

// Rellenamos el informe con la conexion creada y sus parametros establecidos

JasperPrint print = JasperFillManager.fillReport(report,parameters, conn);

// Exportamos el informe a formato PDF

JasperExportManager.exportReportToPdfFile(print, REPORT_EXPORT_PATH);

} catch (Throwable e) {

System.out.println("[tutorial] Error en la generacón del informe "

+ REPORT_PATH + "(error: " + e + ")");

}

}

}