reports

Cuando debemos activar saltos de página en Microsoft RDLC

Ricardo Bolea Soluciones Aitana Leave a Comment

Una de las necesidades más comunes cuando se diseña un report que saca varios documentos seguidos (para hacer facturas, albaranes, órdenes de producción, listas de procesos, etc.) es dividirlo en varias hojas, reiniciar de los números de página, o la inclusión de una última hoja de texto (por ejemplo, condiciones de envío en un pedido de compra).

Vamos a ver un ejemplo práctico de este último caso. No es necesario realizar ninguna acción en el esquema de datos del Object Designer por lo que podemos ir directamente al diseño del report en el Layout. De la misma forma no vamos a modificar nada en la cabecera ni en el pie (si los tenemos), ya que estas propiedades afectan principalmente al cuerpo del report y ahí es donde nos vamos a centrar.

Composición del report

Como se decía al principio, ecuerpo se compone de dos partes diferentes, las líneas del pedido y la tabla de cuadros de texto, que queremos mostrar en una hoja independiente, en la siguiente imagen se muestra un pequeño detalle del cuerpo donde se ve claramente las dos partes que lo componen.

Como la mayoría de los usuarios ya sabrán es necesario tener grupos en el cuerpo para poder sacar más de un ejemplar de cada documento (ya sean copias o varios documentos), si este grupo no contiene todos los datos que queramos que se muestren en el documento final tendremos bastantes problemas a la hora de que los saltos de página y reinicio de la numeración se ejecuten correctamente.

Aquí tenemos el diseño de los grupos del cuerpo, en este caso ha sido muy simple ya que solo tenemos 2 grupos:

Como se ha ido comentando en los párrafos previos, el cuerpo se compone de dos objetos totalmente independientes entre sí; por un lado, tenemos las líneas de pedido y por otro, la tabla de cuadros de texto.

Respecto a esta última, queremos que salgan en una hoja independiente, pero siguiendo la numeración de las líneas de pedido, ya que forman parte del mismo documento. Para ello tenemos que seleccionar la tabla donde hemos introducido los cuadros de texto, como la tabla solo sirve para colocar en una posición concreta los cuadros de texto no contiene ningún grupo que pueda arrastrarnos errores.

Activamos propiedades de salto de página

La propiedad que permite que esta tabla (o cualquier otro objeto del report) aparezca en una hoja nueva es Page Break, y se encuentra activa por defecto, por lo que hay que revisar cada grupo y cada objeto dentro del grupo para desactivarlas y evitarnos sustos innecesarios.

Para poner esta propiedad, tenemos que activarla desde las propiedades de la tabla de cuadros de texto. A dichas propiedades se puede acceder de dos formas distintas, siendo recomendable comprobar que en ambos casos ha quedado activo el Page Break.reports

Una de las rutas a las propiedades la encontramos en el panel de propiedades del Layaout (si se tiene visible). Este panel aparece en el lado derecho y nos va mostrando las propiedades del objeto que seleccionamos en cada momento.

Volviendo a nuestro ejemplo, seleccionamos la tabla con los cuadros de texto y vamos al cajón de propiedades. Tenemos que desplegar la pestaña general, dentro de esa pestaña encontramos el desplegable del Page Break, que se compone de tres opciones:

  • La primera opción es la posición del Page Break o salto de página. En este caso es la única opción que nos interesa, y le hemos indicado que queremos que el salto se produzca al inicio de la tabla. De esta forma cuando vaya a comenzar a ejecutarse la tabla saltará hasta una página nueva y se reproducirá en ella.
  • La segunda opción permite elegir supuestos en los que no se ejecute el salto de página.
  • La tercera opción permite que los números de página se reinicien en el salto de página. No nos interesa tenerlo activo en esta tabla porque saldría como hoja 1 de 1 en lugar de como hoja X de X.

La otra opción de activar esta función en las propiedades de la tabla es más visual, para ello debemos entrar en las propiedades de la tabla con el botón derecho del ratón. Se nos abre directamente en la vista general y marcamos la opción de añadir un Page Break antes (before) de que se ejecute la tabla.

 

Reseteamos los números de página

Hasta ahora hemos conseguido que los cuadros de texto aparezcan en una hoja independiente, pero todavía nos quedan cosas por hacer. En este punto si sacamos más de un pedido el segundo comenzará directamente detrás de los cuadros de texto, en la misma página si hay espacio, y continuará con la numeración previa.

Si recordáis, al principio del artículo hacía referencia a los grupos que conforman el cuerpo del report, ahora es cuando entran en juego.

Seleccionamos el grupo de mayor rango, el primero de todos, y vamos a sus propiedades. Para este punto es recomendable ir al cajón de propiedades lateral, ya que nos permite realizar más acciones. Buscamos la pestaña Group y la desplegamos, hacemos lo mismo con Page Break y, al igual que antes, elegimos donde queremos ubicarlo.

Como con esto pretendemos que los próximos documentos sean independientes del primero, es decir, aparezcan en una hoja nueva y reinicie la numeración seleccionamos “Break Locationend para que, cuando termine de ejecutarse el grupo (tanto las líneas de pedido como los cuadros de texto) salte hasta una nueva página. 

Ahora tenemos que activar la opción ResetPag: True que permite que, junto con el salto de página, se reinicien los números de página. Es decir, si el primer documento son dos hojas de líneas de pedido y una hoja (la tercera) con los cuadros de texto el segundo, que se ejecutará después del break comenzará en una hoja nueva y con numeración 1 (en lugar de seguir como hoja 4).

Ya para terminar, y a modo de resumen, solo hay que comentar que, de cara a realizar estas acciones, es conveniente no empezar a plantearlas hasta tener casi terminado el report ya que, como se ha ido observando, si haces un cambio en la estructura del cuerpo puedes dejar un salto de página enganchado por cualquier parte y que te genere problemas difíciles de ubicar posteriormente.

Finalmente comentar que en las propiedades de la tabla que contiene este último grupo también se puede implementar el Page Break y el ResetPag pero es más recomendable activarlas donde se ha indicado anteriormente.

 

 

Ricardo Bolea

Dynamics

Deja un comentario