Es muy habitual que un
informe no solo muestre datos de las tablas de la base de datos, sino que
también muestre cálculos realizados con esos datos.
Para hacer esos cálculos se
puede usar la potencia de SQL por un lado. Podemos generar esos cálculos
directamente en la consulta SQL, con lo cual solo tendremos que mostrar los
resultados en el informe como si fueran otros campos.
Por otro lado también
podemos realizar los cálculos directamente en el informe.
En esta hoja se verá cómo
crear un informe con cálculos. Además se aprenderán algunos conceptos nuevos en
lo que se refiere a presentación de datos y uso de las zonas del informe.
EJERCICIO GUIADO Nº 1. CREACIÓN DE UN INFORME CON CÁLCULOS
- Entra en NetBeans.
- Vamos a crear un informe
desde cero donde aparezca el listado de servicios realizados. Interesa en
principio que aparezca la fecha del servicio, el tipo del servicio y la
cantidad cobrada.
- Para ello dar clic derecho en algún paquete del
proyecto de NetBeans, luego clic en la opción New y
luego escoger la opción Other…:
- En el cuadro New File que aparece escoger según se
indica en la próxima imagen y luego dar clic en Siguiente:
- Asigne el nombre informeServicios al informe
y dar clic en Terminar.
- Indique ahora que
usará la conexión con la base de datos AMANUVA. Para ello puede elegir la
“Conexión DB AMANUVA” en el desplegable de conexiones, en
la parte superior derecha de la ventana:
7. Ahora que hemos elegido la conexión, indicaremos la
consulta SQL que nos permita extraer los datos que queremos mostrar en el
informe. Para esto se tiene
que dar clic en la pestaña Report
Inspector, luego dar clic derecho en report
name y escoger la opción Edit Query:
8. En la pantalla que aparece debes introducir la
siguiente consulta SQL:
SELECT * FROM servicios ORDER BY fecha
9. Acepta la pantalla anterior. Ya podemos empezar a
diseñar el informe. Empezaremos por poner un título. El título será “Listado
de Servicios”. Agrande la letra del título y céntrelo.
- Ahora para definir los
datos del listado, tendremos que añadir campos a la zona del Detalle (Detail). Debes
arrastrar los campos fecha, tipo y cantidad_cobrada
(automáticamente se añadirán los encabezados de dichos campos en la zona
Encabezados de Columna):
- La zona del detalle es
demasiado grande, así que reduzca su tamaño arrastrando la línea de
separación, cambie también los encabezados de columna para que el informe
tenga una mejor presentación:
- Visualice el listado. El
listado tendrá la siguiente forma:
- Observe como la fecha
muestra también la hora. Antes de continuar, cambiaremos el formato de la
columna de la fecha para que esto no suceda. Para ello seleccione el
campo fecha:
- Vamos a modificar una
de las propiedades llamada Patrón
(Pattern). Haz clic en el botón con tres puntos de esta
propiedad:
- Esta propiedad permite
cambiar la forma en que se presentan números, fechas y demás tipos de
datos en el informe.
Elige en la zona de
categorías la categoría Date (Fecha) y luego escoge el patrón con forma día/mes/año:
Acepta
los cambios.
16. Vuelve a visualizar tu listado. Ahora verás como las
fechas aparecen correctamente.
Recuerda esta propiedad, ya que la usarás muchas
veces. Sobre todo con fechas y números. En el caso de los números, se puede
usar para decidir algunas características como los dígitos decimales o si
mostrar o no el separador de miles.
- Vamos a mejorar el
listado añadiendo dos líneas. Una línea justamente debajo de la cabecera y
otra en la parte del Pie de Columna (Column Footer):
- La línea de la
cabecera separará esta de los datos. Por otro lado, la línea del pie de
columna aparecerá en la parte inferior del listado en todas las páginas.
Visualiza el listado:
- La zona del Pie de Página (Page Footer) es ideal para colocar en ella
el número de página del listado. (Tenga en cuenta que el listado puede ser
muy largo y tener varias páginas).
Lo que introduzca en la
zona Page Footer aparecerá en la parte inferior de cada página en todas
las páginas del listado excepto en la
última página. En el caso de la última página la zona que hace esta función
es la zona llamada Last Page Footer (Último Pie de Página).
Para que la zona Page Footer
afecte a todas las páginas del informe incluyendo la última, es necesario
ocultar la zona Last Page Footer.
Veamos cómo se hace esto:
- Haga clic con el botón derecho del ratón sobre la zona Last Page Footer y elija la opción Delete Band:
- Se podrá observar
entonces como hemos ocultado la zona Last Page Footer. Al hacer
esto, la zona Page Footer tendrá control sobre todas las páginas
incluyendo la última. (Para volver a visualizar la zona oculta haz clic
derecho en Last Page Footer pero
en el Report Inspector y luego elegir la opción Add Band).
- Ahora arrastra el
elemento especial Page X of Y desde las Herramientas (Tools) hasta el pie de
página. Observa:
- Las Herramientas contiene
una serie de elementos especiales que muestran cosas como el número de la
página, la fecha actual, el total de páginas, entre otros. Elementos que
suelen ser muy comunes en los informes.
- Aprovecha las Herramientas
para agregar en la parte derecha del pie de página la fecha actual. Arrastra el elemento Current date a la zona del
pie de página. Entonces verás como aparece un cuadro donde tendrás que
elegir el formato de la fecha. Elige el formato completo:
- El pie de página tiene que haber
quedado más o menos así:
- Ahora visualice el
informe y observe la parte inferior (si hace clic en Fit the page – Ajuste
a la página podrá tener una vista global del informe):
Verá que en la parte
inferior aparece el número de la página y la fecha en el formato indicado.
- Supongamos ahora que
nos interesa tener una columna IGV en la que aparezca el 18% de IGV de
cada una de las cantidades. Desgraciadamente, este campo no existe en la
tabla servicios, de la que hemos extraído los datos. Sin
embargo, es posible crear este campo directamente en la consulta SQL
realizando el cálculo.
En el Report Inspector hacer
clic derecho en report name y escoger la opción Edit Query:
Se muestra ahora la consulta
que introducimos al principio:
- Cambie la consulta por
la siguiente instrucción SELECT:
SELECT fecha, tipo, cantidad_cobrada,
cantidad_cobrada*0.18 as igv FROM servicios ORDER BY fecha
Esta consulta SELECT
muestra la fecha, tipo y cantidad_cobrada de los
servicios, pero además, verá que realiza un cálculo: multiplica el campo cantidad_cobrada
por 0.18
y le asigna al resultado del cálculo el nombre igv.
Es decir, se crea un nuevo
campo (campo calculado) llamado igv y creado a partir del producto
del campo cantidad_cobrada por 0.18:
Los campos calculados es una característica del lenguaje
SQL que aprovecharemos para realizar cálculos con los campos de las tablas.
- Pulse OK y observe la
zona de Campos en el Report Inspector. Verá cómo ha aparecido un nuevo campo llamado igv.
Sólo tiene que agregarlo a la zona de detalle como si fuera un campo más:
- Por supuesto, sería
interesante modificar el texto estático del encabezado de columna del
campo recién agregado:
- Visualice el informe
resultante:
- Para hacer otro
ejemplo de campos calculados, entre en la consulta del informe y modifique
la instrucción SQL de forma que quede así:
SELECT fecha, tipo, cantidad_cobrada,
cantidad_cobrada*0.18 AS igv, cantidad_cobrada*1.18
AS total FROM servicios ORDER BY fecha
En este caso, se está añadiendo otro campo calculado
(en verde) llamado total. Este campo es la suma del igv y la cantidad_cobrada.
Es decir, es el total con IGV.
- Al pulsar Ok observará
en la zona de campos este nuevo campo. Aproveche esto para agregar una
nueva columna con los totales con igv:
- Visualice el informe.
Debe tener este aspecto:
- Hemos aprendido a
agregar campos calculados a partir de otros campos, y añadirlos al
listado. Ahora aprenderemos a realizar cálculos de totales, o cálculos
resumen.
Por ejemplo, sería
interesante calcular la suma de todas las cantidades, todos los IGV y todos los
totales más IGV.
Estos totales suelen
aparecer en la parte final del listado. En la zona llamada Resumen (Summary).
- Empezaremos agregando
en la zona Summary una línea corta:
- Para agregar un total
(una suma) hay que arrastrar desde el Report Inspector el campo que
se quiere sumar a la zona Resumen (Summary):
- Aparecerá un cuadro de
diálogo donde tendrá que seleccionar el botón de radio The
result of an aggregation function (resultado de una función de agregación) y en el combo escoger Sum,
luego haz clic en Ok:
- Aparecerá un nuevo
recuadro en la zona Resumen.
Colóquelo alineado con la columna del Costo:
- Haga el mismo proceso
para calcular la suma del IGV y la suma del Total.
Al final, el diseño de la zona Resumen
debe tener el siguiente aspecto:
- Los elementos situados
en la zona del Resumen aparecen
al final del listado. Visualice el informe y observe la parte final del
listado:
- El informe está
terminado. Guárdelo y ciérrelo.
CONCLUSIONES:
SQL permite la creación de campos calculados a partir de otros campos en
una consulta SELECT.
Esta característica es muy útil por ejemplo en el caso de los informes,
ya que nos permite mostrar cálculos en ellos.
iReport, además, proporciona la posibilidad de realizar sumas totales de
campos.
Recuerde también el uso de las distintas zonas del informe:
-
Title – Título: Usado para colocar el título del informe. Aparece en la primera página
únicamente.
-
Page Header – Encabezado de Página: En él se coloca aquello que deba
aparecer en la parte superior de todas las páginas.
-
Column Header – Encabezado de Columna: Usado para colocar la cabecera del
listado.
-
Detail – Detalle: Usado para colocar los datos (campos).
-
Column Footer – Pie de
Columna: En él se coloca aquello
que deba aparecer en la parte inferior del listado en todas las páginas.
-
Page Footer – Pie de Página: En esta zona se coloca aquello que deba aparecer
en la parte inferior de todas las páginas (menos la última, si está activado el
Last Page Footer). Se usa para colocar el número de página.
-
Last Page Footer – Ultimo Pie de Página: Es el pie de página de la última página.
Si se desactiva, entonces es sustituido por el Page Footer.
-
Summary – Resumen: Usado para colocar cálculos de totales. Aparece al
final del listado.
No hay comentarios.:
Publicar un comentario