2011-10-13 16 views
6

Me estoy irritando con iReports. El problema es que tengo un conjunto de datos que devuelve datos para varios clientes y quiero usar la "Expresión de grupo" contra la ID del cliente y hacer que el informe muestre las Pestañas de detalles por cliente.iReports Grouping Bug - ¿Ocurrencias múltiples?

Descubro que, aparentemente aleatoriamente, donde hay más de una fila de datos para un cliente, iReports generará dos o más agrupaciones (a veces hace lo que espero y agrupa todos los datos del cliente), el campo IDing el cliente es el mismo y no cambia.

¿Alguien ha visto esto antes? Para ser sincero, no puedo creer que sea realmente un error, sino algo que me he perdido. Solo mucha búsqueda para encontrar un resultado adecuado.

+0

¿Ha ordenado los datos por ID de cliente (el campo en el que se agrupan)? –

Respuesta

8

Creo que este es un problema de clasificación de datos.
La cita de Guía iReport último:

JasperReports grupos de registros mediante la evaluación de la expresión de grupo. Cada vez que el valor de la expresión cambia, se crea una nueva instancia grupal. El motor no realiza ninguna clasificación de registros (si no se solicita explícitamente ), por lo que cuando definimos grupos, siempre debemos ocuparnos de la clasificación de registros . Es decir, si queremos agrupar un conjunto de direcciones por país , los registros que seleccionamos para el informe ya deben estar ordenados por país por . Es simple ordenar los datos cuando se usa una consulta SQL usando la cláusula ORDER BY. Cuando esto no es posible (es decir, cuando obtiene los registros de un documento XML), podemos solicitar que JasperReports ordene los datos para nosotros. Esto se puede hacer utilizando el tipo opciones disponibles en la ventana de consulta


Puede ordenar los datos de las siguientes maneras:

  • en caso de usar de Base de Datos de conexión JDBC de tipo fuente de datos Puede agregar ORDER BY customerId cláusula a la consulta del informe, donde ID del cliente - nombre de columna del campo d con id cliente
  • en caso de usar de archivo de conexión csv o algo como esto se puede organizar la clasificación de datos mediante la adición de SortField viviendas en el campo de la plantilla del informe (jrxml archivo):
<jasperReport ...> 
    ... 
    <field name="customerId" class="java.lang.String"/> 
    <sortField name="customerId"/> 
+0

Hola Alex, muchas gracias por esto ... ¡ha resuelto el problema! – Mark

+0

@Mark bienvenida :) –

3
  1. instrucción SQL tiene ORDER BY?
  2. iReport group está agrupado por customer_id?