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:
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.