AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / Editores / Editor de reportes / Reportes anidados
  • Creación de una reporte anidada
  • Principio
  • Ejemplo 1: Informes anidados simples
  • Ejemplo a realizar
  • Operaciones a realizar
  • Ejemplo 2: Informes anidados con diferentes orientaciones (Paisaje/Retrato)
  • Ejemplo a realizar
  • Operaciones a realizar
  • Características específicas de los informes secundarios
  • Bloques en el secundario reporte
  • Orientación de la secundaria reporte
  • Page se rompe en el secundario reporte
  • reporte secundaria basada en una consulta con parámetros
  • reporte secundaria basada en una consulta que utiliza una conexión específica
  • reporte secundaria impresa desde un bloque de pie de página Page
  • Visualización del número total de páginas en la reporte secundaria
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Creación de una reporte anidada

Principio

La creación de un reporte principal que contiene varios informes secundarios se realiza en varios pasos:
  1. Creación de una reporte principal.
  2. Creación de los informes secundarios. Estos informes pueden tener una orientación diferente a la del reporte principal.
  3. Impresión de informes secundarios en el reporte principal con iPrintReport. Se debe utilizar esta función:
    • en el evento "Antes de imprimir" un bloque: el reporte secundario se imprimirá antes de este bloque.
    • en el evento "Después de imprimir" un bloque: el reporte secundario se imprimirá después de este bloque.
      Atención: Si los reportes anidados tienen diferentes orientaciones, se debe llamar a la función iParameter para cambiar la orientación de la impresión.
  4. Configuración de la impresión de las cabeceras y pies de página de Page para el reporte anidado (iNestedHeaderFooter). Se puede utilizar esta función:
    • en el código de apertura de la reporte principal: será tenido en cuenta por todos los informes anidados que se imprimirán desde la reporte principal.
    • antes de imprimir la reporte anidada: será tenido en cuenta por los siguientes reporte anidados.
  5. Impresión de la reporte principal. Para obtener más información, consulte Impresión de un reporte principal que incluye varios informes secundarios.
Observación: Para imprimir informes con diferentes orientaciones (vertical/paisaje), le recomendamos que utilice la secuencia de informes. Este método puede ser fácilmente implementado. Para obtener más información, consulte Secuenciación de informes.
Ejemplo 1: Informes anidados simples

Ejemplo a realizar

La reporte "RPT_Orden" se basa en el archivo de datos de "Ordenes".. Este reporte se utiliza para imprimir las características de cada pedido (fecha, número de cliente, importe total, etc.).. Una pausa en el artículo "OrderNum" se utiliza para separar las diferentes órdenes.
La consulta "QRY_ProductOrdered" selecciona todos los productos de un orden especificado. Esta consulta espera un número de pedido como parámetro.
La "RPT_ProductOrdered" reporte se basa en la consulta "QRY_ProductOrdered".. Esta reporte sólo imprime los productos seleccionados por la consulta "QRY_ProductOrdered".
La reporte "RPT_ProductOrdered" corresponde a la reporte secundaria.. Esta reporte se imprimirá después de cada pausa.

Operaciones a realizar

  1. Crear la reporte "RPT_Orders: esta reporte corresponde a la reporte principal.
    • Haga clic en nuevo en los botones de acceso rápido.
    • La ventana de creación de nuevos elementos se abre: haga clic en "Reporte", y luego en "Reporte".
  2. Crear la consulta "QRY_ProductOrdered. Para obtener más información, consulte Crear una consulta con parámetros.
  3. Crear la reporte "RPT_ProductOrdered: esta reporte corresponde a la reporte secundaria.
    • Haga clic en nuevo en los botones de acceso rápido.
    • La ventana de creación de nuevos elementos se abre: haga clic en "Reporte", y luego en "Reporte".
      Observación: El bloque Page pie de página de este reporte no se imprimirá. Para obtener más información, consulte Bloques en el secundario reporte.
  4. Introduzca el siguiente código en el evento "Después de imprimir" del bloque Fin de ruptura del reporte "RPT_Order":
    // Initialize the query and
    // pass as parameter the number of the order currently printed
    iInitReportQuery(RPT_ProductOrdered, MySource.OrderNum)
    // Print the nested report
    iPrintReport(RPT_ProductOrdered)
Ejemplo 2: Informes anidados con diferentes orientaciones (Paisaje/Retrato)

Ejemplo a realizar

El reporte principal ("RPT_LANDSCAPE") se imprime en modo horizontal. Debe llamarse un sub-reporte ("RPT_PORTRAIT") en modo vertical para cada elemento impreso.. El reporte secundario debe iniciarse (cambiando la orientación) en el código "Post-print" del bloque del cuerpo del reporte principal. Luego, la reporte secundaria debe restaurar la orientación de la reporte principal al final de la impresión..

Operaciones a realizar

  1. Cree la reporte "RPT_LANDSCAPE: esta reporte corresponde a la reporte principal.
    • Haga clic en nuevo en los botones de acceso rápido.
    • La ventana de creación de nuevos elementos se abre: haga clic en "Reporte", y luego en "Reporte".
    • Elija una orientación en modo horizontal.
      Observación: Esta reporte puede ser cualquier tipo de reporte que utilice datos procedentes de cualquier fuente: archivo, consulta, tabla, programación, ....
  2. En la description del reporte principal, en la pestaña "Opciones", marque "Imprimir el reporte como está".
  3. En la pestaña "Formato", especifique los márgenes y la sangría. Validar la ventana de description de la reporte.
  4. Cree el reporte "RPT_PORTRAIT": esta reporte corresponde a la reporte secundaria.
    • Haga clic en nuevo en los botones de acceso rápido.
    • La ventana de creación de nuevos elementos se abre: haga clic en "Reporte", y luego en "Reporte".
    • Elija una orientación en modo vertical.
      Observación: Esta reporte puede ser cualquier tipo de reporte que utilice datos procedentes de cualquier fuente: archivo, consulta, tabla, programación, ....
  5. En el description del secundario reporte, en la pestaña "Opciones", marque "Imprimir reporte tal cual".
  6. En la pestaña "Formato", especifique los mismos márgenes y la misma sangría que los especificados para el reporte principal.. Validar la ventana de description de la reporte.
  7. Escriba el siguiente código en el "Después de la impresión" del bloque PÁGINA FOOTER de "RPT_LANDSCAPE" Event( principal reporte):
    // Call to the report with a different orientation (portrait mode here)
    iPrintReport(RPT_PORTRAIT)
    // Note: If this secondary report includes a page footer, this page footer will not be printed.
Características específicas de los informes secundarios

Bloques en el secundario reporte

Mediante Default, al imprimir un reporte secundario (con iPrintReport), se imprimen todos los bloques del reporte secundario excepto los siguientes:
  • el bloque Encabezado de página.
  • el bloque Pie de página.
Para forzar la impresión de estos bloques, utilice iNestedHeaderFooter.
Observación: Si el reporte secundario contiene una tabla cuyo encabezado se encuentra en el bloque Encabezado de página, solo el bloque Pie de página no se imprimirá (los demás bloques se imprimirán). En este caso, el bloque de cabecera Page se imprimirá antes del primer fila del tabla (que se encuentra en el reporte secundario).

Orientación de la secundaria reporte

La reporte secundaria y la reporte principal pueden tener diferentes orientaciones. En este caso, hay que llamar a iParameter para modificar la orientación de la impresión en consecuencia.
Observación: Para imprimir informes con diferentes orientaciones (vertical/paisaje), le recomendamos que utilice la secuencia de informes. Este método puede ser fácilmente implementado. Para obtener más información, consulte Secuenciación de informes.

Page se rompe en el secundario reporte

Las pausas Page definidas en un reporte secundario se tendrán en cuenta al imprimir el reporte principal.

reporte secundaria basada en una consulta con parámetros

Si la reporte secundaria se basa en una consulta con parámetros, utilice iInitReportQuery para pasar los parámetros a la consulta. Esta función debe utilizarse antes que iPrintReport.

reporte secundaria basada en una consulta que utiliza una conexión específica

Si la reporte secundaria se basa en una consulta que gestiona una conexión específica, utilice iInitReportQueryConnection para ejecutar esta consulta (y para pasar parámetros si es necesario). Esta función debe utilizarse antes que iPrintReport.

reporte secundaria impresa desde un bloque de pie de página Page

Si el reporte secundario se imprime desde un bloque de pie de página Page, sus bloques de pie de página Page no se imprimirán.

Visualización del número total de páginas en la reporte secundaria

Es necesario añadir un contador Page en el reporte principal para que el contador Page s funcione en el reporte anidado. Sin embargo, el contador que se encuentra en el principal reporte puede hacerse Invisible si es necesario.
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 23/11/2022

Señalar un error o enviar una sugerencia | Ayuda local