Esta macro para plantillas de Docuo en Word permite mostrar los datos de uno o varios documentos «hijos» de otra categoría, mediante fragmentos de texto que se repiten una vez por cada documento hijo.
Las macros ‘For each’ en plantillas Word, sólo están disponibles en Docuo Enterprise.
Por ejemplo, si disponemos de dos categorías: «Clases» y «Alumnos» relacionadas entre sí a través de una lista desplegable, podemos crear una plantilla Word 365 de una clase que muestre tantos párrafos iguales como alumnos pertenezcan a la clase, cada uno con sus datos.
La definición de la macro se realiza en el propio documento de Word con una sintaxis como:
@DOCUO.FOREACH{Origen de datos, [orden], [filtro], [reemplazo único], [top]}
Insertar aquí un texto Word con etiquetas dentro a modo de plantilla que se repetirá por cada documento encontrado en el origen de datos
@DOCUO.ENDFOREACH{}
Donde:
Origen de datos: Admite una etiqueta de campo o el código de una categoría. Si utilizamos una etiqueta de campo deberemos especificar la etiqueta del campo lista desplegable en la categoría «hija» (alumnos en el ejemplo) que la conecta con la categoría «padre» (clases en el ejemplo). Si especificamos el código de una categoría podremos obtener cualquier documento de la misma, pero en este caso es conveniente especificar un fitro que limite los resultados (ver más adelante).
Orden: Parámetro opcional. Etiquetas de campos por las que se desea ordenar en ascendente (ASC) o descendente (DESC). Admite varios campos separados por comas. Si no se especifica se ordena por código
Filtro: Parámetro opcional. Permite especificar con sintaxis T-SQL las condiciones de filtrado de datos.
Reemplazo único: Parámetro opcional. Si es TRUE los datos de la tabla se reemplazan una única vez. Por defecto es FALSE para que cada vez que se reemplacen etiquetas los datos se actualicen automáticamente.
Top: Parámetro opcional. Por defecto es 100, indica el número máximo de registros a mostrar.
En el caso de los alumnos de una clase de un colegio, un ejemplo sería (dentro de la plantilla de Word en la categoría Clase):
Clase: <@Propiedades:Código>
Curso: <@Datos de la clase:Curso>
@DOCUO.FOREACH{<@ALUMNOS:Datos:Clase>, '<@ALUMNOS:Datos:Nombre> ASC'}
El alumno: «<@ALUMNOS:Datos:Nombre>», nació en el año: <@ALUMNOS:Datos:Año nacimiento> y se matriculó en el año <@ALUMNOS:Datos:Año matriculación>.
@DOCUO.ENDFOREACH{}
El contenido de la macro For Each, se repetirá una vez por cada documento «hijo» (alumnos de la clase) hasta un límite de 100 repeticiones.
Las macros For Each pueden ser anidadas. Si por ejemplo en la categoría «Alumnos» tenemos otra categoría hija de «Adultos autorizados» podríamos mostrar también la información de los adultos autorizados para cada alumno:
Clase: <@Propiedades:Código>
Curso: <@Datos de la clase:Curso>
@DOCUO.FOREACH{<@ALUMNOS:Datos:Clase>, '<@ALUMNOS:Datos:Nombre> ASC'}
El alumno: <@ALUMNOS:Datos:Nombre>, nació en el año: <@ALUMNOS:Datos:Año nacimiento> y se matriculó en el año <@ALUMNOS:Datos:Año matriculación>.
Los adultos autorizados que pueden recogerlo en el colegio son:
@DOCUO.FOREACH{<@AUTORIZADOS:Datos:Alumno>, '<@AUTORIZADOS:Datos:Nombre> ASC'}
Don/Dña <@AUTORIZADOS:Datos:Nombre> con DNI nº <@AUTORIZADOS:Datos:DNI>.
@DOCUO.ENDFOREACH{}
@DOCUO.ENDFOREACH{}
También es posible anidar macros de tipo tabla dentro de una macro ‘For each’. Siguiendo con el mismo ejemplo anterior podríamos mostrar la lista de adultos en una tabla:
Clase: <@Propiedades:Código>
Curso: <@Datos de la clase:Curso>
@DOCUO.FOREACH{<@ALUMNOS:Datos:Clase>, '<@ALUMNOS:Datos:Nombre> ASC'}
El alumno: <@ALUMNOS:Datos:Nombre>, nació en el año: <@ALUMNOS:Datos:Año nacimiento> y se matriculó en el año <@ALUMNOS:Datos:Año matriculación>.
Los adultos autorizados que pueden recogerlo en el colegio son:
@DOCUO.TABLE{<@AUTORIZADOS:Datos:Alumno>, '<@AUTORIZADOS:Datos:Nombre> ASC'}
Nombre | DNI |
<@AUTORIZADOS:Datos:Nombre> | <@AUTORIZADOS:Datos:DNI> |
@DOCUO.ENDTABLE{}
@DOCUO.FOREACH{}