lunes, 11 de noviembre de 2013

Smartform a 3 Niveles - parte 3

Última parte del tutorial, donde desarrollaremos la ventana que nos permite mostrar el detalle, el sub-detalle y el salto de página.

Pueden ver las 2 partes anteriores por aquí:
Primera parte.
Segunda parte.

Ventana MAIN:
 Esta es una ventana tipo principal. Tiene como características importantes la impresión de datos de manera dinámica (bucles) y los saltos de página. En esta ventana por lo general se muestran los detalles de la cabecera dejando el reporte a 2 Niveles (cabecera y detalle); pero en nuestro ejemplo, le hemos añadido un sub nivel más, ya que alguna vez tuve la oportunidad de modficar un smartforma como este a 3 Niveles.




Podemos observar que tenemos 2 carpetas, EQUIPOS y JUGADORES. Dentro de ellas también tenemos 2 bucles respectivos, que a fin de cuentas es lo k vamos a tratar, ya que lo de las máscaras será solo un vistazo pues el procedimiento es el mismo que las anteriores máscaras.



Bucle DET1:
Como la carpeta nos señala, este bucle va a manejar la tabla interna referente a los equipos, los cuales en la primera parte del tutorial ya hemos visto de que manera obtenemos estos datos.

El bucle trabaja con la tabla interna y la estructura de la siguiente manera:


Básicamente, lo que estamos haciendo aquí es colocar la tabla interna GTD_DET1 utilizando la estructura GWA_DET1 en donde va a recorrer todos los registros que tengan como condición que el campo CABID sea igual al CABID que viene de la cabecera (GWA_DET1-CABID = GWA_CAB-CABID). Así solo recorrerá los equipos correspondientes al código de campeonato enviado.

De momento este es un bucle muy simple (sin campos calculados para la sumarización, conteo, quiebres AT NEW, END, etc ...) pero eso será motivo de otro ejemplo.

Luego viene lo ya conocido, como mostrar los datos del bucle:

TABLA_DET_DET1:   Muestra una línea de datos del equipo de la estructura del bucle.



Solo para recordar: Para agregar una variable, campo de estructura o field-symbol, recordemos que es de la siguiente forma:

No olvidar que la variable, campo de estructura o field-symbol, está entre 2 ampersand.

ESPACIO2:                 Muestra una línea de espacio.



 
TABLA_CAB_DET2:  Muestra la cabecera de la tabla del sub-detalle (el mismo principio de la máscara TABLA_CAB_DET1). Ésta por una cuestión de orden y ayuda visual está dentro de una carpeta llamada JUGADORES.


Solo para recordar: Me parece siempre una buena opción ordenar los textos y demás objetos dentro de carpetas que digan más o menos que es lo que contiene, a manera de referencia. Cómo podemos observar en este caso, que la cabecera estática para el sub-detalle va a tener 3 grupos de columnas iguales (Número, posición y Nombres).

Recordemos también que para crear un bucle es tan simple como hacer esto:



Bucle DETOUT:
Esta es la última rueda del coche. Con este bucle vamos a mostrar los datos del plantel, es decir datos de los jugadores que pertenecen a sus respectivos clubes, que en fin de cuentas pertenecen a sus respectivos campeonatos. Las formas, las mismas que ya hemos trabajado. Démosle un vistazo:


La tabla utilizada es GTD_DETOUT, la estructura GWA_DETOUT y las condiciones son:
 GWA_DETOUT-CABID = GWA_CAB-CABID >> Código de Campeonato
 GWA_DETOUT-DETID =  GWA_DET1-DETID >> Código de Equipo

Con estas condiciones aseguramos que el plantel se muestre según su equipo correspondiente.

Lo que tenemos que señalar, es que para este ejemplo, la cantidad de jugadores nunca generan por si solos el salto de página (a no ser que ingreses mas de 100 jugadores cosa que no se da en un equipo de futbol); por tanto, la manera que tenemos que hacer para generarlo es utilizando un comando dentro del bucle que haga el salto por cada equipo (el equipo tampoco genera salto de página por si solo).



Comando SALTO_POR_EQUIPO:
Este comando es el encargado de manipular el salto de página según nos convenga. De esta manera se crea el comando:


Aquí lo que se necesita tener en cuenta es que este comando se coloca debajo de las mácaras de edición que están dentro del bucle de equipos, ya que el salto de página lo queremos por equipo.


Adicionalmente, se puede destacar que este salto de página no solo se podría hacer con la misma página, sino con otra que estuviese creada.

Con esto, el resultado sería el siguiente:


Bueno hemos llegado al final, cualquier consulta o comentario no olviden escribirnos.
Saludos y Éxitos.




No hay comentarios:

Publicar un comentario