Saltar la navegación

4.4.- Subtotales.

El cálculo de subtotales implica hacer recuentos y cálculos resumidos (medias, porcentajes, mínimos o máximos) del conjunto de los datos que se representan en el informe, pero aplicando una categorización que lo divide en grupos. Se realiza el cálculo para cada grupo y luego para el conjunto de datos completo también.

El proceso de obtención del subtotal conlleva los siguientes pasos:

  1. Ejecutar la consulta contra la base de datos que devuelva los registros que nos interesan.
  2. Dividir los registros en grupos en función de un criterio, por ejemplo, por algún campo específico, como la ciudad o el tipo. Los grupos deben ser mutuamente excluyentes, es decir, cada registro pertenece siempre a un grupo, y no puede pertenecer a más de uno.
  3. Aplicar el cálculo o recuento a cada grupo.
  4. Hacer el cálculo para todo el conjunto de registros obtenidos.

Un ejemplo sencillo de creación de subtotales lo hemos visto en el apartado anterior, basta con añadir la variable al pie del grupo. No obstante, podemos hacer cálculos algo más complejos aprovechando las características de las variables. 

Ilustración de una captura de pantalla de un informe con subtotales
Montaña Martín Vergel (Elaboración propia)


En el siguiente ejemplo, vamos a añadir a nuestro proyecto, un nuevo fichero de tipo report con el nombre Informe_Subtotales. En este informe, vamos a proceder a consultar los datos de los artículos vendidos en la fábrica para mostrar por cada artículo vendido, el número de pedido en el cual se vendió, las unidades que se vendieron en cada pedido y el precio del artículo cuando se efectuó la venta. Por cada artículo que se muestre queremos, además, mostrar el nombre o descripción del artículo, el número de unidades vendidas y el promedio de las unidades vendidas por cada artículo. Al final del informe, mostraremos el número total de unidades que ha vendido la fábrica y el promedio de unidades totales. (Estos dos valores aparecerán al final del informe).

La instrucción SQL que utilizaremos para recuperar la información que queremos mostrar será la siguiente:

select descripcion, detalle_pedidos.ID_Articulo, ID_pedido, unidades, detalle_pedidos.precio from detalle_pedidos, articulos Where articulos.id_articulo = detalle_pedidos.id_articulo
order by ID_ARTICULO



Por lo tanto, deberemos de configurar dicho report para que utilice la sentencia SQL de la misma forma que lo hemos hecho en los ejemplos anteriores.

A continuación, procedemos a diseñar el informe. Para ello, agregaremos una etiqueta (Static Text) a la banda Title con el texto "INFORME DE UNIDADES VENDIDAS".

En la banda Detail, procedemos a arrastrar los campos ID_pedido,  unidades y precio. Creamos un nuevo agrupamiento, pulsando la opción Add Report Group del panel Report Inspector, con el nombre Articulo y mostraremos tanto el encabezado del agrupamiento como el pie.

En la banda Group Header, arrastraremos el campo descripción, para conseguir que se muestre el nombre de los artículos e introduciremos las etiquetas ID_PEDIDO, UNIDADES y PRECIO.

En la banda Group Footer introduciremos dos etiquetas con los textos "Subtotal  unidades" y "Promedio de las unidades". Acompañando a estas etiquetas, arrastraremos la variable unidades dos veces para indicar en la primera que nos muestre la aplicación de la fórmula suma (SUM) y la segunda para indicarle que nos muestre el resultado de aplicar la función promedio (Average).

Para conseguir que al final del informe, nos aparezca la suma y el promedio de las unidades totales vendidas, arrastraremos a la banda Summary, de nuevo el campo unidades, para que se aplique la función suma (SUM) y la función promedio (Average). Ambos valores deberán de ir precedido de una etiqueta (Static Text) donde se indique la descripción de los valores.

El diseño del informe final será el que aparece a continuación:

Ilustración de una captura de pantalla del diseño de un informe con subtotales.
Montaña Martín Vergel (Elaboración propia)



Con la propiedad del agrupamiento Start on a new Page activada conseguimos que cada agrupamiento comience en una nueva página.