Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / iReport / Java / Estilos condicionales en iReport

Estilos condicionales en iReport

Autor jc mouse martes, marzo 12, 2013

iReport nos da la posibilidad de dar un formato condicional a los diferentes registros resultado de nuestras consultas SQL, el uso más común que se le da es de «distinguir diferentes valores» entre los registros como números impares de color rojo, pares de color azul, números negativos en rojo, positivos en verde, letras mayúsculas en negrilla, nombres subrayados, etc.

Para esta tarea iReport cuenta con la etiqueta <style> donde podremos indicar la condición y el estilo que debe tomar el componente, (un jTextField por ejemplo).

Necesitamos para comprender este post

– iReport 3.7 o superior

– Una base de datos MySQL

– Conocimiento básico de XML

Nivel: Intermedio 🙂

Tiempo: 15 minutos

Comencemos.

Para este ejemplo se hará uso de una base de datos llamada «dbtest» que consta de una sola tabla «mitabla» o.O

-- 
-- Estructura de tabla para la tabla 'mitabla'
-- 

CREATE TABLE mitabla (
  id bigint(20) NOT NULL auto_increment,
  nombre varchar(100) NOT NULL,
  sexo varchar(1) NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

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

INSERT INTO mitabla VALUES (1, 'Alan Brito', 'M');
INSERT INTO mitabla VALUES (2, 'Armando Esteban Quito', 'M');
INSERT INTO mitabla VALUES (3, 'Elsa Lame ', 'F');
INSERT INTO mitabla VALUES (4, 'Guillermo Nigote', 'M');
INSERT INTO mitabla VALUES (5, 'Irma Tando ', 'F');
INSERT INTO mitabla VALUES (6, 'Mónica Galindo ', 'F');
INSERT INTO mitabla VALUES (7, 'Viviana K. Lavuelta ', 'F');
INSERT INTO mitabla VALUES (8, 'Susana Torio ', 'F');
INSERT INTO mitabla VALUES (9, 'Omar Garita', 'M');
INSERT INTO mitabla VALUES (10, 'Flor D. Turra ', 'F');

1. Crea un nuevo reporte en iReport, realiza la conexión a la base de datos y crea el Query con la siguiente instrucción:

SELECT id, nombre, sexo FROM mitabla

2. En el diseñador del reporte, añade dos Text Field y asigna la propiedad «Text Field Expresión» como se ve en la siguiente imagen:

ireport 2013

Hasta este punto es solamente una consulta normal como cualquier otra, ejecuta el PREVIEW para ver algo como esto:

report sample

3. Lo que haremos ahora, sera añadir una condición que nos permita distinguir los registros de hombres y mujeres mediante colores.

Abre el código XML del reporte, segundo botón después de DESIGNER.

Al inicio del código XML, busca la etiqueta <queryString> donde esta la instrucción SQL

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" ... >
 <queryString>
  <![CDATA[SELECT id, nombre, sexo FROM mitabla]]>
 </queryString>
 <field name="id" class="java.lang.Long"/>
 <field name="nombre" class="java.lang.String"/>
 <field name="sexo" class="java.lang.String"/>
 ...

Antes de la etiqueta <queryString>, se añade la etiqueta de estilos <style>…</style>, indicando un nombre para el estilo , por ejemplo «miestilo», después, dentro esta etiqueta,  se abre la etiqueta <conditionalStyle>…</conditionalStyle> y dentro <conditionExpression>…</conditionExpression> donde se indica la condición para el estilo, se puede añadir más de una condición por estilo.

También se debe añadir la etiqueta <style> dentro de conditionalStyle,  no es la misma etiqueta del principio o.O, en esta etiqueta se indica los cambios de estilo, igualmente, una por condición. Debes tener algo como esto:

 <style name="miestilo" isDefault="false">
  <conditionalStyle>
   <conditionExpression><![CDATA[new Boolean($F{sexo} == "F")]]></conditionExpression>
   <style isDefault="false" style="miestilo" forecolor="#FFFFFF" backcolor="#F60404"/>
  </conditionalStyle>
  <conditionalStyle>
   <conditionExpression><![CDATA[new Boolean($F{sexo} == "M")]]></conditionExpression>
   <style isDefault="false" style="miestilo" forecolor="#FFFFFF" backcolor="#0025DF"/>
  </conditionalStyle>
 </style>
 <queryString>
  <![CDATA[SELECT id, nombre, sexo FROM mitabla]]>
 </queryString>

En este ejemplo, los registros que sean de sexo masculino «M» serán de color azul, los de sexo femenino «F» de color rojo.

4. Ahora que ya creamos nuestros estilo, debemos añadir este al objeto donde lo utilizaremos. En este ejemplo, es en el Text Field «nombre«, buscamos la etiqueta correspondiente en la vista XML de ireport.

<textField>
   <reportElement x="71" y="4" width="261" height="16"/>
   <textElement>
     <font size="12"/>
   </textElement>
   <textFieldExpression class="java.lang.String"><![CDATA[$F{nombre}]]></textFieldExpression>
</textField>

Agregamos style=»nombre de estilo» a la etiqueta reportElement quedando el código de la siguiente manera:

<textField>
   <reportElement style="miestilo" mode="Opaque" x="71" y="4" width="261" height="16"/>
   <textElement>
     <font size="12" isBold="true"/>
   </textElement>
   <textFieldExpression class="java.lang.String"><![CDATA[$F{nombre}]]></textFieldExpression>
</textField>

Terminamos, ejecutamos el preview y debemos tener algo como esto:

report kawaii

El resultado no es muy atractivo 🙂 pero es solo un sencillo ejemplo de lo que podemos hacer con estilos condicionales en iReport :).

Descarga el ejemplo del post AQUI.

NOTA POBRE: En este tutorial se implemento el estilo condicional modificando directamente el archivo XML o.O, iReport, permite realizar esto desde «Report Inspector», «paleta» y «properties», 100 veces mas sencillo, pero si algo sale mal (Ley de Murphy), es bueno saber donde va cada cosa para poder realizar los cambios cuando sea necesario.

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Crea presentaciones Power Point desde Java

Crea presentaciones Power Point desde Java

Apache POI es la API de Java para el trabajo con archivos de Microsoft como son Word, Excel y Power Point. Apache POI se...

Gestión de Stock (Parte 2)

Gestión de Stock (Parte 2)

Continuando con el desarrollo de la aplicación (Parte 1), abrimos Netbeans y creamos un nuevo proyecto al que llamaremos...

Uso y creación de archivos 9-Patch

Uso y creación de archivos 9-Patch

Antes de la aparición de los celulares inteligentes y de las grandes mejoras tecnológicas que trajeron con ellas, las ap...

Juego: Acierta los colores (Código Fuente)

Juego: Acierta los colores (Código Fuente)

Acierta los colores o Adivina los colores es un sencillo juego que consiste en que dado 6 colores «rojo», «verde», «salm...

Reproduce archivos MP3 desde android

Reproduce archivos MP3 desde android

Reproducir archivos de audio en nuestras aplicaciones android. Necesitamos IDE Eclipse y SDK Android instalado Un archiv...

Construye tu swing Versus para el mundial 2014

Construye tu swing Versus para el mundial 2014

Para ponerse a tono con el ambiente mundialista de Brasil 2014, en este post construiremos un swing java al que llamarem...

5 comentarios en “Estilos condicionales en iReport”

  1. HERNAN dice:

    Hola, excelente el material. muchas gracias
    ¿Crees que sería posible que prepares un tutorial sobre el uso de las librerias web «Display-TAG»? para ser usadas con java, netbeans y mysql
    éxitos

  2. Jesús Castillo dice:

    Hola, podrías explicarme como puedo cambiar un dato boolean en jasper??? es decir, que si en mi base de datos salga como respuesta TRUE o FALSE, puedo cambiarlo a= SI o NO?

    1. Mouse dice:

      tendrias que modificar la consulta haciendo uso de CASE WHEN, por ejemplo:
      (CASE WHEN tu_campo_boolean = true THEN ‘SI’
      WHEN tu_campo_boolean = false THEN ‘NO’
      END) As nuevo_campo

  3. John dice:

    Muchas gracias por el material, me ha sido de utilidad.
    Dios les bendiga

  4. Javier Martorell dice:

    Buenos días, estoy utilizando la herramienta iReport para el diseño de informes, y mi pregunta es: Como puedo cambiar el atributo «backcolor» de un elemento, por el valor de un campo de mi base de datos en la que tengo el código RGB del color.
    Gracias por anticipado.

Los comentarios estan cerrados

Los comentarios están cerrados para este post
Comparte lo que sabes

Categorias

Últimas entradas

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Herramientas

Generador de Enlaces a Whatsapp