Añadiendo elementos al informe

Después de haber definido tanto el origen de datos como las opciones del informe, ahora podemos diseñarlo añadiendo elementos a las secciones.

Tanto en el menú insertar como en la toolbar del editor de informes encontraremos los distintos tipos de elemento que podemos incluir en el informe. Estos son:

Texto

Representa un texto simple o etiquetas de texto. Las etiquetas de texto son usadas para mostrar información descriptiva en la definición de un informe tales como títulos, encabezados, etc. Las etiquetas son elementos estáticos y sus contenido no cambia cuando se imprime el informe.

Campo

Representa los objetos de datos de campo. Los tipos de dato posibles son texto, numérico y fecha. Estos controles son usados para la extracción de datos generados dinámicamente en el informe desde la tabla de Velneo que lo alimente.

Línea

Permite crear líneas dentro del informe. Por lo general, las líneas son usadas para dibujar líneas horizontales y verticales en encabezados, subrayar títulos, etc.

Rectángulo

Permite crear figuras rectangulares en el informe. Es usado habitualmente para dibujar cajas o bordes alrededor de un área específica. Este control hace más fácil el pintado de rectángulos en lugar de hacerlo usando cuatro líneas.

Elipse

Permite crear círculos o elipses en el informe. Suelen usarse para dibujar gráficos o bordes alrededor de un texto.

Imagen

Permite crear elementos de tipo imagen. Suele usarse para incluir imágenes tanto estáticas como dinámicas en la definición de un informe. Las imágenes estáticas, tales como el logo de la empresa que a menudo son impresas en el encabezado de un informe, pueden ser alimentadas o bien por un archivo de imagen del disco, o bien por definición del informe. Las imágenes dinámicas estará alimentadas por campos de tipo objeto dibujo de tablas de Velneo.

Si la la imagen va a ser una imagen de una tabla de Velneo el control deberá estar alimentado directamente por un campo de tipo objeto dibujo, ejemplo: #IMG. No es posible usar una fórmula, ejemplo: choose(#CM=1, #IMG_1, #IMG_2).

Código de barras

Permite crear códigos de barras.

Los códigos soportadosson:

  • AUS POST

  • AUS REDIRECT

  • AUS REPLY

  • AUX ROUTE

  • AZRUNE

  • AZTEC

  • C25 IATA

  • C25 IND

  • C25 INTER

  • C25 LOGIC

  • C25 MATRIX

  • CHANNEL

  • CODABLOCK F

  • CODE 11

  • CODE 128B

  • CODE 39

  • CODE 93

  • CODE32

  • CODEONE

  • Codabar

  • Code 128

  • Code 16k

  • Code 49

  • DAFT

  • DATAMATRIX

  • DF Indent

  • DP Left

  • EAN 128

  • EAN 14

  • EAN 8, 13, 14, X

  • EAN128_CC

  • ENAX_CC

  • EXCODE 39

  • FIM

  • FLAT

  • GRIDMATRIX

  • HIBC_128

  • HIBC_39

  • HIBC_AZTEC

  • HIBC_BLOCKF

  • HIBC_DM

  • HIBC_MICPDF

  • HIBC_PDF

  • HIBC_QR

  • ISBNX

  • ITF M

  • JAPAN POST

  • KIX

  • KOREA POST

  • LOGMARS

  • MAXICODE

  • MICRO PDF 417

  • MICRO QR

  • MSI PLESSEY

  • NVE 18

  • ONE CODE

  • PDF 417

  • PDF 417 TRUNC

  • PHARMA

  • PHARMA TWO

  • PLANET

  • PLESSET

  • POSTNET

  • PZN

  • QR CODE

  • RM4 SCC

  • RSS 14

  • RSS 14 STACK

  • RSS 14 STACK OMNI

  • RSS EXP

  • RSS EXPSTACK

  • RSS LTD

  • RSS14STACK_CC

  • RSS14_CC

  • RSS14_OMNI_CC

  • RSS_EXPSTACK_CC

  • RSS_EXP_CC

  • RSS_LTD_CC

  • TELEPEN

  • TELEPEN NUM

  • UPC A

  • UPC E

  • UPCA_CC

  • UPCE_CC

Este control puede estar alimentado, o bien por una fórmula de Velneo, o bien por una expresión de tipo script, de forma que podemos definir el contenido no sólo por medio de un valor o un campo, sino también mediante un script que se calcula en el momento de imprimir.

Imagen personalizada

Esta opción le permite representar contenidos especiales, personalizados definidos en los informes. El campo típico de aplicación utiliza esta función para los gráficos de representación o contenidos similares.

Añadiendo etiquetas de encabezados

En primer lugar, añadamos las etiquetas que representen el encabezado de cada columna de las filas de datos. Para crear un nuevo objeto etiqueta, primero seleccionar la herramienta etiqueta del menú insertar. Al hacerlo el cursor se transformará en una cruz, entonces, hacer clic sobre la sección donde queramos incluirla (por ejemplo, en la sección de cabecera de informe). Haciendo esto crearemos el objeto etiqueta en esa sección y se abrirá el diálogo de configuración correspondiente. En él podremos definir las siguientes opciones:

Etiqueta

Escribir el texto de la etiqueta.

Ajuste de texto

Si esta opción está activada, el texto será ajustado para adaptarse a la caja que lo contenga.

Imprimir sólo si la fórmula script es verdadera

Se trata de una expresión lógica que nos permitirá definir cuándo será impresa o no. Veremos más adelante los detalles.

Añadir una etiqueta por cada campo de la tabla que deseemos imprimir.Podremos cambiar su situación dentro de la sección simplemente pinchando, arrastrando y soltando.

Para borrar una etiqueta, seleccionarla y pulsar la tecla alt y la tecla supr.

Añadiendo líneas

Para crear un nuevo objeto de línea seleccionar el comando línea del menú insertar o seleccionar el comando correspondiente de la toolbar. El cursor se transformará en una cruz, entonces, hacer clic en la sección del informe en la zona donde queramos que comience, pincharemos y arrastraremos hasta el zona donde queramos que termine. Para mover la línea añadida simplemente habrá que hacer clic sobre ella, arrastrar y soltar. Para borrar una línea, seleccionarla y pulsar el botón supr.

Para editar las propiedades de una línea simplemente hacer doble clic sobre la misma. Las siguientes opciones están disponibles:

Imprimir sólo si la fórmula script es verdadera

Se trata de una expresión lógica que nos permitirá definir cuándo será impresa o no. Veremos más adelante los detalles.

Añadiendo campos al informe

Ahora debemos añadir los elementos más importantes del informe. Los objetos de campo contienen información dinámica extraída de un origen de datos, un parámetro o una variable. Para crear un nuevo objeto campo seleccionar la opción del mismo nombre del menú insertar o el comando correspondiente de la toolbar. Al hacerlo, el cursor se transformará en una cruz. Hacer clic sobre la sección en la que queramos situar el campo. La sección será generalmente la de detalle. Haciendo esto crearemos el objeto campo en una sección específica en esa posición y abrirá el diálogo donde podremos establecer sus propiedades. Estas son:

Tipo de origen del campo

Este combo contiene los posibles orígenes de los cuales el campo puede obtener datos. Los datos del campo pueden ser cargados de los orígenes siguientes:

  • Origen de datos.

  • Parámetro.

  • Variable.

  • Variable de sistema.

  • Script.

  • Plantilla.

Campo/Expresión

Esta propiedad representa el nombre de la columna de datos de la cual el campo va a tomar la información (ejemplo: campo de tabla de Velneo). Cuando se usa como origen de datos una consulta SQL, el nombre se corresponderá con el nombre de la columna sql incluida en la consulta sql. Cuando se trata de otros orígenes de datos, tales como texto, este valor suele ser el número de la columna de datos. En el caso de que sea una tabla de Velneo, se activará el editor de fórmulas de Velneo para que podamos componer la fórmula que alimenta al campo.

Tipo de datos

El tipo de datos correspondiente al campo. Se soportan los siguientes tipos de datos:

  • Texto.

  • Numérico.

  • Fecha.

  • Booleano.

Ajuste de texto

Si esta opción está activada, el campo será ajustado para adaptarse a la caja que lo contenga.

Las opciones ajustar a la derecha y ajustar a la izquierda, podremos usarlas cuando la alineación horizontal del campo sea derecha o izquierda, respectivamente.

Si el campo está alineado a la derecha, éste será alineado al margen derecho del control, pero si también activamos la opción ajustar a la derecha lo que hará será ajustar el campo al margen derecho del informe.

Si el campo está alineado a la izquierda, éste será alineado al margen izquierdo del control, pero si también activamos la opción ajustar a la izquierda lo que hará será ajustar el campo al margen izquierdo del informe.

Cadena plantilla de argumentos arg()

Se trata de una expresión de tipo cadena con el símbolo %1 que será sustituido por el contenido establecido en el control. Supongamos que en un control de un informe mostramos el campo #NAME y en esta propiedad le establecemos la cadena plantilla de argumentos siguiente: A la atención de %1. Al imprimir el informe en este control se imprimiría:

A la atención de José Luis Díaz
A la atención de  Alfonso Gracía
etc.

Imprimir sólo si la fórmula script es verdadera

Se trata de una expresión lógica que nos permitirá definir cuándo será impresa o no. Veremos más adelante los detalles.

A continuación mostramos una tabla de fórmulas de columna de campo:

Tipo de origen de datos

Fórmula de columna de campo

Descripción

Origen de datos Velneo

Expresión fórmula Velneo

Mediante el asistente para edición de fórmulas de Velneo especificaremos el campo o definiremos la fórmula que se aplicará en ese campo.

Origen de datos

[ID del origen de datos.]Columna

La columna equivale a una nombre de columna SQL válido en la consulta SQL. Si el ID del origen de datos es especificado, el generador de informes asignará el origen de datos nombrado por su ID. Si no se especifica el ID del origen de datos, el origen de datos actual (el procesado en curso) se asume que lo hemos asociado previamente al detalle.

Parámetro

nombreParámetro

El nombre/ID del parámetro.

Variable del sistema

nombreVariable

El nombre/ID de la variable.

Expresión

Expresión

Es posible usar incluso un script con la expresión para el campo. Tanto los datos como el origen de datos, parámetros y variables pueden ser usados en las expresiones. Para ampliar información sobre las expresiones consultar el capítulo usando expresiones.

Plantilla

Expresión de plantilla

Una plantilla es simplemente una sustitución de elementos de un informe tales como los datos del origen de datos, parámetro o variable. Todos ellos unidos en una única cadena.

Algunas propiedades están disponibles solamente para determinados tipos de datos. Están localizadas en separadores independientes dentro del diálogo. Las siguientes opciones están disponibles para campos numéricos:

Formato numérico

Si se activa esta opción, se activará el formateo del número.

Usar configuración local

Si se activa esta opción, el generador de informes usará los formatos numéricos locales.

Vacío si valor igual a 0

Si se activa esta opción, el contenido del campo no se imprimirá en el caso de que su valor sea 0.

Precisión decimal

El número de decimales a imprimir.

Ancho del campo

Ancho del número en dígitos. Especifica la cantidad mínima de espacio que se rellena y llenado con el carácter de relleno.

Carácter de formato

En esta opción de un único dígito se especificará el código del formato para los números. Los valores posibles son: e, E, f. Con e, E y f, la precisión es el número de dígitos después del separador decimal. Con ‘g’ y ‘G’, la precisión es el número máximo de dígitos significativos. Usado por la función QString::arg( double a, int fieldWidth = 0, char format = ‘g’, int precision = -1, const QChar fillChar).

Para continuar nuestro informe, añadir los campos de la tabla de Velneo correspondientes a las etiquetas que hemos creado previamente.

Para su uso en etiquetas existe la constante @SKIP_NEXT. Debemos usarlo en un control (usado sólo para esto) como condición de visualización, en la fórmula script. No obstante, existe una forma más sencilla de generar informes de etiquetas.

Esta constante para fórmulas script es la que fuerza el salto de registro, para poder imprimir varios registros distintos en el mismo detalle. Este salto se produce por orden de tabulación, por lo que debemos asegurarnos de que, los elementos correspondientes al siguiente registro, se encuentren por detrás en el orden de tabulación al control que incluye la constante.

Debemos tener en cuenta que cuando usamos la condición @SKIP_NEXT para el salto de registro en el detalle y en la última línea, en el caso de que no se completen los registros, se repite el último registro en aquellas etiquetas que deberían quedar vacías al no tener más registros que imprimir.

Para evitar esto, usaremos la variable de sistema @ISNOTFINISHED como condición para imprimir; evitaremos que se impriman estas etiquetas de más, mejorando el resultado final del informe.

El ámbito de uso de la constante @skip_next se ciñe exclusivamente a su uso en la impresión de etiquetas (informes solamente con una sección de detalle y de altura fija).

Añadiendo un control texto html

Se trata del control que debemos usar para imprimir campos de tipo objeto texto enriquecido.

A este tipo de control le podemos definir las propiedades alto automático y salto de página, que nos permitirán que el control crezca en altura en función de su contenido y que, si no entra entero en una página, se pueda imprimir en varias páginas, respectivamente.

Modo plantilla

En el controle HTML de un informe encontraremos el modo plantilla. Este nuevo modo permite definir contenido de textos que incluyen fórmulas. Podemos incluir fórmulas de Velneo o parámetros ($P{} ó $D{}).

En ejecución se realizará la sustitución del contenido de un control por el resultado de la fórmula del tipo $P{} ó $D{}. De esta forma obtenemos texto continuo que incluye valores dinámicos, permitiéndonos definir informes del tipo combinar correspondencia para cartas, u otros documentos personalizados.

Solamente podremos resolver fórmula que contengan un campo de Velneo, pero no fórmulas que realicen operaciones, concatenaciones o llamadas a funciones.

Limitaciones

Los contenidos html que cotienen elementos tales como tablas o viñetas pederán la configuración de tabla o las viñetas cuando su contenido ocupa más de una página. Solamente podremos hacer que se impriman correctamente si el informe está configurado del modo siguiente:

  • En la configuración del informe esté configurado como tipo de Informe el valor documento de texto.

  • El informe no tenga activada la opción de pasada doble.

  • Debe tener solamente un registro de origen, y en el detalle solamente se puede imprimir el campo html, no otros campos.

  • No puede tener más de un detalle.

  • Puede tener secciones de cabecera y pie de página.

Añadiendo variables para totales

Antes de añadir campos de variables al informe, veamos el manejo de variables en los informes personalizables. Las variables son unos elementos especiales usados para proveer contadores y totales. Cada variable tiene un nombre, un tipo de función, tipo de datos y tiene asignada una columna de fuente de datos. Para añadir una variable seleccionar la opción variables… del menú informes. Están disponibles las opciones siguientes:

ID de variable

Identificador de la variable.

Fórmula script de la variable

Esta propiedad representa el nombre de la columna de datos de la cual la variable obtendrá los datos. No es posible usar otras variables en la fórmula.

Tipo de función

El tipo de función de la variable. Los tipos de función soportados son:

  • Sum: la variable de tipo suma totalizará el valor en la columna de datos especificada retornada por el campo.

  • Count: el tipo de variable COUNT será incrementado en 1 unidad por cada fila del detalle.

Reinicializar

Nos permite configurar cuándo se podrá a 0 la variable. Podremos hacer que la variable sea puesta a 0 solamente al comienzo del informe, o en cada página en cada agrupamiento.

Valor inicial

Valor inicial que tendrá la variable.

Desde este diálogo podremos tanto añadir como editar y/o borrar variables de un informe.

Añadiendo agrupamientos al detalle

Mientras que la mayoría de los informes pueden ser definidos usando una única sección de detalle que contenga múltiples columnas y filas de datos, otros -como es el caso de nuestro informe de ejemplo- requieren datos de resumen, totales y subtotales. Para informes que requieren datos de resumen el editor de informes personalizables soporte las secciones de agrupamiento. Las secciones de agrupamiento tienen las características siguientes:

  • Siempre están asociadas a una sección de detalle.

  • Definidas por cabeceras de agrupamiento y pies de agrupamiento.

  • Las cabeceras de agrupamiento siempre se imprimen encima de la sección de detalle.

  • Los pies de agrupamiento siempre se imprimen debajo de la sección de detalle.

  • Referenciar las columnas de base de datos en las cuales se interrumpirán los encabezados y los pies de agrupamiento.

  • Fuerzan un nuevo encabezado de agrupamiento cada vez que el valor de la columna referenciada cambie.

  • Fuerzan un nuevo pie de agrupamiento cada vez que el valor de la columna referenciada cambie.

  • No hay limitación en el nivel de agrupamientos permitido.

El el diálogo de agrupamientos se muestran los grupos añadidos al informe en el orden en el que han sido creados. Las secciones de agrupamiento añadidas aparecerán en el editor después de haber aplicado la configuración de los agrupamientos. Los agrupamientos son estructurados jerárquicamente. El primer agrupamiento será el primer nivel de agrupamiento, el segundo será el segundo nivel y así sucesivamente.

Para añadir un nuevo grupo al detalle, abrir el menú informe y seleccionar la opción detalle y agrupamientos… En la lista seleccionar el detalle deseado, entonces, para abrir el diálogo de agrupamientos hacer clic en el botón agrupamientos. Esto abrirá el diálogo de configuración de agrupamientos. El agrupamiento pertenecerá al grupo que hayamos seleccionado en la ventana anterior. Para añadir un nuevo agrupamiento hacer clic en el botón +. Podremos configurar las opciones siguientes:

ID de agrupamiento

El identificador del agrupamiento.

Fórmula script del agrupamiento

El nombre de la columna del origen de datos en la que se basa el cálculo. Si cambiamos el valor de la columna referenciada, el agrupamiento se interrumpirá. También podemos usar como fórmula valores constantes tales como 0 o 1. En ese caso el agrupamiento no se interrumpirá, simplemente finalizará. Esto podría ser muy útil para campos totalizadores finales.

Cabecera del agrupamiento y pie del agrupamiento

Para habilitar o inhabilitar la cabecera o el pie del agrupamiento. Podremos especificar también la altura inicial de estas secciones.

Salto de página

En esta sección podemos configurar si queremos que el agrupamiento siempre se imprima en una página.

En el caso de que vayamos a usar las variables del sistema pageno (número de página en curso) y pagecount (número total de páginas), podremos activar la opción de resetear número de pagina por agrupamiento para que la primera página de cada agrupamiento comience siempre a numerarse desde 1.

Reiniciar variables

Esta lista contiene los nombres de las variables que están disponibles para ser reinicializadas al finalizar los agrupamientos. Por lo tanto, solamente estarán visibles aquellas variables que tengan establecido algún valor en la opción reinicializar.

Los grupos añadidos a un detalle aparecerán en la lista de agrupamientos. Desde dicha lista podremos tanto añadir, como editar y/o borrar grupos.

Añadiendo campo de variable de totalización

Si ya tenemos definido un agrupamiento con encabezado y pie. los pies de agrupamiento generalmente son secciones usadas para mostrar totales y subtotales. Añadiremos un campo al pie del informe con los parámetros siguientes:

Tipo de origen de datos

Variable.

campo

Especificaremos el identificador que hayamos dado a la variable y tipo de datos: numérico.

Añadiendo otros elementos

A continuación enumeramos otras cosas que podríamos añadir:

Añadir un campo en el pie de página:

Tipo de origen de datos

Variable del sistema

Campo

pageno.

Tipo de dato

Numérico.

Cadena plantilla de argumentos arg()

Página: %1.

pageno es una variable del sistema que devuelve el número de la página en curso.

Ajustando y dando formato

Para terminar el informe vamos a dar formato y a ajustar los elementos. Estas son las tareas que se deberían hacer:

Ajustar la altura de las secciones haciendo uso del ratón o a través del editor de geometría. Es muy importante la altura del detalle, ya que es una sección de carácter repetitivo.

Seleccionar las etiquetas en la cabecera de la página y poner la fuente en negrita.

Seleccionar y alinear a la derecha todos los campos numéricos.

Establecer las opciones de formato para campos numéricos: activar la opción formato numérico y establecer una precisión de 2 decimales.

Activar también la opción usar configuración local para campos con valores y totales.

Probando el informe

Dispones de una serie de comandos de instrucción que te permiten elegir la salida de la impresión:

Informe externo: previsualizar informe: para previsualizar el informe. Informe externo: imprimir informe: para imprimir el informe.

Por lo tanto, necesitaremos programar un proceso que haga la vista previa o la salida a papel del informe y ejecutarlo desde Velneo vClient. El origen de la línea donde se vaya a imprimir el informe tendrá que ser una lista de registros del origen principal del informe.

Última actualización