Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / iReport / Proyectos / Reportes y Subreportes con iReport

Reportes y Subreportes con iReport

Por jc mouse miércoles, octubre 24, 2012

Cuando creamos reportes en iReport que son un poco complicadas o reportes personalizados, osea, tratando de evitar el clásico reporte de tabla, debemos utilizar subreportes para dividir el trabajo y no complicarnos la existencia 🙂

En este tutorial veremos una forma de crear estos subreportes muy fácilmente.

Necesitamos:

  • iReport 3.7 o Superior
  • Conocimientos de SQL y una base de datos MySQL
  • Nivel: Intermedio, a mejor entendedor, si sabes crear un reporte podrás crear un subreporte 🙂

La base de datos que utilizaremos es la siguiente :

MER curso

El código SQL es:

-- 
-- 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=MyISAM 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 Amiano ', 'elcochinote@facebook.com', '500-33-12199');

-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla 'materia'
-- 

CREATE TABLE materia (
  codigo varchar(7) NOT NULL,
  nombre varchar(32) default NULL,
  curso varchar(12) default NULL,
  horario varchar(32) default NULL,
  PRIMARY KEY  (codigo)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- 
-- Volcar la base de datos para la tabla 'materia'
-- 

INSERT INTO materia VALUES ('SIS-009', 'Introducción a la programación', 'A1', 'Miércoles de 06:00 a 09:00');
INSERT INTO materia VALUES ('TEL-500', 'Teleinformática', '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', 'Metodologías de la Información', 'C32', 'Martes de 16:00 a 18:00');
INSERT INTO materia VALUES ('MAT-280', 'Estadística Descriptiva', 'C15', 'Viernes de 09:00 a 11:00');
INSERT INTO materia VALUES ('FIS-200', 'Física Básica 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=MyISAM DEFAULT CHARSET=utf8;

-- 
-- Volcar la base de datos para la tabla 'matricula'
-- 

INSERT INTO matricula VALUES ('EST-00000001', 'FIS-200');
INSERT INTO matricula VALUES ('EST-00000001', 'TEL-500');
INSERT INTO matricula VALUES ('EST-00000001', 'SIS-009');
INSERT INTO matricula VALUES ('EST-00000002', 'SIS-200');
INSERT INTO matricula VALUES ('EST-00000002', 'FIS-200');
INSERT INTO matricula VALUES ('EST-00000003', 'MAT-280');
INSERT INTO matricula VALUES ('EST-00000003', 'SIS-009');
INSERT INTO matricula VALUES ('EST-00000003', 'TEL-500');
INSERT INTO matricula VALUES ('EST-00000003', 'SIS-200');
INSERT INTO matricula VALUES ('EST-00000004', 'SIS-234');
INSERT INTO matricula VALUES ('EST-00000005', 'TEL-500');
INSERT INTO matricula VALUES ('EST-00000001', 'SIS-234');

Creando los reportes y subreportes.

Lo primero que haremos sera crear el reporte principal o reporte que llamaremos PADRE

1. Abre el iReport y crea un archivo nuevo.

2. En este reporte solo cargaremos los registros de los estudiantes sin parámetros de entrada, el SQL es:

SELECT  dni ,  nombre ,  email ,  celular 
FROM  estudiante

3. Ahora debemos diseñar el reporte y añadir los TextField de la siguiente manera :

paso 1

OJO: dejamos un espacio en blanco debajo de nuestros textfield, en ese lugar colocaremos el subreporte.

Si ejecutamos ahora el reporte padre, nos muestra los registros de estudiantes

preview reporte

Si todo bien hasta aquí, continuamos con el subreporte.

Subreporte.

Hay varias maneras de agregar un subreporte, nosotros utilizaremos un reporte desde otro archivo *.jasper.

1. Crea un nuevo archivo vacío y llámalo como HIJO.

2. Debes quitar los margenes del reporte para que no nos estorben cuando lo insertemos en el reporte padre. Para hacer esto ve a menú FORMATO -> REMOVER MARGENES DE REPORTE.

3. Crea un parámetro de entrada que llamaras dni.

4. La instrucción SQL que utilizaremos es:

SELECT codigo ,  nombre ,  curso ,  horario 
FROM matricula INNER JOIN materia ON idmateria=codigo
WHERE dni=$P{dni}

5. Crea el reporte como si se tratara de cualquier otro reporte. Añade los TextField y dale formato.

sub report

5. Compila el reporte y comprueba que este todo bien.

UNIENDO TODO

1. Ve al reporte PADRE y en la paleta busca SUBREPORT, en versiones actuales el icono es distinto, no importa, la cosa es que diga SUBREPORT 🙂

paleta

2. arrastra este objeto al diseñador de reporte, aparece una nueva ventana, debes elegir la opción «USAR UN REPORTE EXISTENTE», busca y selecciona el archivo  «hijo.jasper» , presiona siguiente.

RPG

3. En la siguiente ventana te muestra diferentes opciones de conexión, elige la primera, «USAR LA MISMA CONEXIÓN…» . siguiente.

conexion static

4. En en esta ventana te pregunta por los parámetros que se utilizan en el subreporte, nosotros solo utilizamos un parámetro de entrada llamado DNI, este parámetro debemos asignarle un valor del reporte padre que  lógicamente es el DNI del estudiante, entonces lo buscamos y seleccionamos.

parametros

5. En el último paso, te pregunta de donde buscara el archivo JASPER. Nosotros colocaremos el archivo JASPER PADRE y el archivo JASPER HIJO, en la misma carpeta, entonces seleccionamos la opción «USE A STATIC ABSOLUTE PATH REFERENCE» . Presiona el botón Terminar.

static reference

6. Acomoda el subreporte en el diseñador de reporte.

comodato

7. ejecuta el PREVIEW y si no tienes errores, debes ver algo como esto:

fatallity

o.O es todo

Tags

Artículos similares

Construye la interfaz de facebook

En este tutorial veremos un poco lo que es el diseño de interfaces en android, en lugar de colocar el ejemplo de uso de[...]

NBANDROID-V2 plugin para Netbeans

Cuando Android estaba en sus inicios, varios IDEs (Entorno de Desarrollo Integrado​​) se disputaban el dominio por su de[...]

Blog MVC – Iniciando el proyecto [p2]

Segunda parte del tutorial [Crea tu blog con el patrón MVC y php]. En esta 2da parte toca ver lo que es la creación del[...]

Exportar registros MySQL a Excel

Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelap[...]

Proteger documento PDF con contraseña y limitar permisos desde Java

Los archivos digitales (txt, docx, xlsx, odt, odp, pdf, etc) nos permiten almacenar información el cual en ocasiones, de[...]

Leer y escribir en un archivo binario

Problema: Desarrolle un programa en consola con c# para escribir y leer información de un archivo binario. Los datos a e[...]