Foros del Web » Programación para mayores de 30 ;) » Java »

Jasper Report. Reporte con filas de colores alternos

Estas en el tema de Jasper Report. Reporte con filas de colores alternos en el foro de Java en Foros del Web. Hola a todos. Recientemente empezé a trabajar con Jasper Report y usando IReport 3.7.1. En internet he encontrado tutoriales buenos y ya puedo hacer bastantes ...
  #1 (permalink)  
Antiguo 25/03/2010, 06:43
 
Fecha de Ingreso: marzo-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Jasper Report. Reporte con filas de colores alternos

Hola a todos.

Recientemente empezé a trabajar con Jasper Report y usando IReport 3.7.1. En internet he encontrado tutoriales buenos y ya puedo hacer bastantes cosas. El problema es que todavia no se como hacer que los reportes queden "agradables" en cuanto a cuestiones de diseño.

Actualmente quiero hacer un reporte donde las filas tengan colores alternos.
Creo que el camino a seguir es el uso de los estilos pero no encuentro mucho de esto. Si alguien me pudiera ayudar estaría muy agradecido.

Gracias de antemano.
  #2 (permalink)  
Antiguo 25/03/2010, 11:33
 
Fecha de Ingreso: marzo-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Jasper Report. Reporte con filas de colores alternos

Hola a todos de nuevo.

Despues de pensar un poco he resuelto el problema de mostrar un reporte con filas de colores alternos.
Supongo que el que lee esto ya ha realizado algunos reportes. Con el siguiente link es suficiente:
[URL="http://javatutoriales.blogspot.com/2009/02/creacion-de-reportes-con-jasperrepots-y.html"]http://javatutoriales.blogspot.com/2009/02/creacion-de-reportes-con-jasperrepots-y.html[/URL]

Quiero postear la solución para por si a alguien le hace falta y por si alguien tiene otra solución más elegante.

En mi caso tenia que crear un reporte sencillo con dos columnas Nombre y Descripcion.

Normalmente se hacen dos fields en la banda detail $F{nombre} y $F{descripcion} pero lo que hice fue crear 4 campos
$F{nombre0} y $F{descripcion0}
y despues otros dos fields debajo de estos:
$F{nombre1} y $F{descripcion1}

La idea es que los fields 0 muestren los campos pares y los fields 1 muestren los impares.

Ademas de esto pongo un frame en los campos 0 del color de las filas pares y le pongo el color que quiero que tengan dichas filas. Por supuesto este frame debe quedar detras de los fields.

Hago lo mismo con los fields 1 con el color de las filas impares.

Despues de esto solo tengo que modificar ligeramente el JRDataSource encargado de proporcionar datos al reporte. Para mi caso:

public class RolDataSource implements JRDataSource
{
private List<Rol> roles = null;
private int indiceActual = -1;

public RolDataSource(List<Rol> roles)
{
this.roles = roles;
}

@Override
public Object getFieldValue(JRField field) throws JRException
{
if ((field.getName().equals("nombre0")) && ((indiceActual % 2) == 0))
{
return roles.get(indiceActual).getRolnombre();
}
if ((field.getName().equals("nombre1")) && ((indiceActual % 2) == 1))
{
return roles.get(indiceActual).getRolnombre();
}
if ((field.getName().equals("descripcion0")) && ((indiceActual % 2) == 0))
{
return roles.get(indiceActual).getRoldesc();
}
if ((field.getName().equals("descripcion1")) && ((indiceActual % 2) == 1))
{
return roles.get(indiceActual).getRoldesc();
}
return null;
}

@Override
public boolean next() throws JRException
{
indiceActual++;
return indiceActual < roles.size();
}
}

Note como el valor del field ${nombre0} se devuelve solo si el indice actual es par
lo mismo para los otros campos.
En otro caso devuelvo null.

Hasta aqui todo bien pero si trato de mostrar el formulario apareceran dos filas por cada fila real del reporte que se quiere. Estos valores nulos se mostraran.
Para esto modifico el Print When Value de cada field para mostrarse solamente cuando el valor no es nulo.
Para los frames tambien es necesario modificar el Print When Value pues ellos deben ocultarse cuando los fields respectivos (o uno de ellos) son nulos.
Esto se hace con el codigo:
new Boolean(${field} != null);
Tambien debemos activar el checkbox de Remove Line When blank de cada field.

Hecho esto se mostrara el reporte con las filas de colores alternos.

Espero que resulte util a alguien. Y si tienen otra idea posteen.

Saludos:
Alberto.

Última edición por alberto7D9; 25/03/2010 a las 11:42
  #3 (permalink)  
Antiguo 26/03/2010, 11:48
 
Fecha de Ingreso: diciembre-2001
Ubicación: Asuncion
Mensajes: 143
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Jasper Report. Reporte con filas de colores alternos

Aqui va otra solucion:

Primero colocamos los campos en la banda Details

Luego dibujamos un rectangulo que cubre todo el area de la banda Details, y luego enviamos dicho rectangulo al fondo de tal modo que se vean los campos

Despues seleccionamos el rectandulo y buscamos la propiedad Print When Expression y ponemos adentro el siguiente codigo:
Código PHP:
new Boolean($V{REPORT_COUNT}.intValue() % == 0
  #4 (permalink)  
Antiguo 07/12/2011, 09:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 34
Antigüedad: 15 años
Puntos: 0
Respuesta: Jasper Report. Reporte con filas de colores alternos

compañeros muchas gracias he estado buscando esto en muchos foros y por fin algo que funciona
  #5 (permalink)  
Antiguo 04/06/2013, 21:22
 
Fecha de Ingreso: junio-2013
Ubicación: Riobamba
Mensajes: 1
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Jasper Report. Reporte con filas de colores alternos

Cita:
Iniciado por taar Ver Mensaje
Aqui va otra solucion:

Primero colocamos los campos en la banda Details

Luego dibujamos un rectangulo que cubre todo el area de la banda Details, y luego enviamos dicho rectangulo al fondo de tal modo que se vean los campos

Despues seleccionamos el rectandulo y buscamos la propiedad Print When Expression y ponemos adentro el siguiente codigo:
Código PHP:
new Boolean($V{REPORT_COUNT}.intValue() % == 0
Te cuento que he estado desarrollando unos reportes, y me ha servido de mucho el post y la respuesta, muchas gracias.
  #6 (permalink)  
Antiguo 30/08/2013, 09:43
 
Fecha de Ingreso: agosto-2013
Mensajes: 1
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Jasper Report. Reporte con filas de colores alternos

Yo hice algo similar, solo que definí un Style primero. Van los paso:
1. Agregue un Frame que cubriera toda la banda de Detail
2. Definí un nuevo Style, a ese style le agregué la condición
($V{REPORT_COUNT}%2) == 0 (porque estoy usando Groovy, si tu lenguaje es java la condición es como la que dicen en la respuesta anterior), además ahí definí el color a usar en backcolor
3. En el frame que definí en Detail, le puse que usara el estilo que se acaba agregue en el paso 2

Espero les sirva :D

Etiquetas: colores, filas, jasper, report, reporte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:57.