En nuestro segundo ejemplo, vamos a obtener un informe en donde se muestren los datos agrupados por el resultado del cálculo de una expresión. En este caso vamos a mostrar en el informe el nombre de cada cliente, la dirección y ciudad agrupados por la primera inicial del nombre de los clientes.
Comenzaremos creando un informe nuevo y vacío con el nombre Ejemplo_agrupamiento_complejo. Configuraremos la sentencia SQL que se va a asociar a dicho informe. Para este ejemplo, utilizaremos la siguiente consulta SQL:
SELECT nombre, direccion, ciudad FROM clientes order by nombre
Los registros seleccionados ordenados por el nombre de los clientes.
Al informe, le asignaremos como título "Listado de clientes ordenados alfabéticamente". Para ello, introduciremos una etiqueta en la banda Title con dicho texto.
Por cada cliente, se mostrará el nombre del cliente (cliente), la dirección del cliente (direccion) y la ciudad del cliente (Ciudad). Por lo tanto, añadiremos los campos nombre, direccion y ciudad a la banda Detail. Eliminaremos las etiquetas que nos aparecerán de forma automática en la banda Column Header. Reduciremos la altura de las bandas que no utilicemos a cero. El diseño del informe quedará de la siguiente forma:
En este ejemplo, añadiremos en el encabezado del grupo, la letra por la que comienza el nombre del cliente de cada persona.
En el pie del grupo mostraremos el número de registros que hay en cada grupo.
Comenzaremos añadiendo un nuevo agrupamiento. Para ello, pulsaremos la opción Add report group, de la misma forma que lo hicimos en el ejemplo anterior. Le asignaremos el nombre Primera_letra. En esta ocasión, vamos a configurar el agrupamiento para que sea por el resultado del cálculo de una expresión.
Para ello, activaremos la opción Group by the following expression, e introduciremos la sentencia para obtener la primera inicial del nombre del cliente:
$F{nombre}.charAt(0)
Activaremos las opciones Add the group header y Add the group footer para mostrar el encabezado de grupo y pie de grupo.
Arrastraremos al encabezado del grupo, desde la paleta, un campo de texto (Text Field) y en su propiedad Text Field Expression introduciremos el valor: $F{nombre}.charAt(0)
En el pie de grupo introduciremos una etiqueta con el texto "Número de clientes" y el campo nombre, pero indicando que se aplique la fórmula de contar (Count). De esta forma conseguiremos que se muestre el número de clientes por cada agrupamiento.
El diseño del informe quedará de la siguiente forma: