1. Inicio
  2. Administradores
  3. Fórmulas
  4. Funciones JavaScript
  5. Función detailAgg – Componer un campo desde los datos de una pestaña detalle

Función detailAgg – Componer un campo desde los datos de una pestaña detalle

Esta funcionalidad permite componer un campo utilizando los datos de uno o varios de sus documentos hijo en una de sus pestañas detalle.

Por ejemplo, un documento de la categoría País tiene asociados varios documentos de la categoría Provincia. Y si queremos crear un campo en País que enumere los datos de todas sus Provincias utilizaremos la fórmula:

Document.detailAgg(Campo_lista, Campos, Separador, Orden, [Condición], [Top], [Agrupación])

Donde:

Campo_lista: es el nombre de la lista desplegable en la categoría hija, donde se selecciona el documento de la categoría padre. Su sintaxis es el de una etiqueta tipo: <@CódigoCategoría:Grupo:Campo>. Por ejemplo, en País, podemos combinar los datos de sus Provincias de la siguiente forma:

'<@PRV:Datos:Pais>'

Campos: es el cadena de texto entre comillas con las etiquetas de campos que queremos extraer de cada documento hijo. Estas etiquetas son del mismo tipo que el Campo_lista. En este caso se pueden combinar con texto fijo como vemos en el ejemplo:

'Provincia: <@PRV:Propiedades:Nombre> Superficie m2: <@PRV:Datos:Superficie>'

Separador: es una cadena de texto entre comillas que separara los datos de cada documento. Puede incluir \n para salto de línea o \t para tabuladores. Por ejemplo:

'\n'

Orden: es una cadena de texto de ordenación. Indica sobre qué campo o campos queremos ordenar los resultados. La sintaxis debe incluir el nombre de uno o más campos separados por comas. Detrás de cada uno de ellos podremos especificar la cláusula ASC o DESC para indicar el orden. Por ejemplo:

'<@PRV:Propiedades:Nombre> ASC, <@PRV:Datos:Superficie> DESC'

Condición: es un parámetro opcional con una cadena de texto de condición T-SQL del mismo tipo que se utiliza en las listas desplegables. Nos permite filtrar los resultados del agregado. Por ejemplo, para filtrar Provincias que empiecen solo por Al:

"<@PRV:Propiedades:Nombre> LIKE 'A%l'"

Top: es un parámetro opcional con un número que indica el número máximo de registros a retornar.

Agrupación: es un parámetro opcional que indica el campo por el que se quiere agrupar. Cuando se utilizan agrupaciones es posible indicar las funciones de agregado:

  • COUNT(*) para retornar el numero de elementos
  • SUM(campo) para obtener la suma de campos númericos y moneda
  • AVG(campo) para obtener la suma de campos númericos y moneda
  • MAX(campo) para obtener el valor máximo del campo
  • MIN(campo) para obtener el valor mínimo del campo

Es importante saber que cuando se utilizan agrupadores solo se pueden usar en el parámetro Orden campos que ya están incluidos en el parámetro Campos.

La fórmula final (sin agrupaciones) desde un campo de la categoría País llamado Provincias que empiezan por Al y su superficie es la siguiente:

Document.detailAgg('<@PRV:Datos:Pais>', 'Provincia: <@PRV:Propiedades:Nombre>, Superficie km2: <@PRV:Datos:Superficie>', '\n', '<@PRV:Propiedades:Nombre> ASC', "<@PRV:Propiedades:Nombre> LIKE 'Al%'")

Por lo tanto, para el País España, el campo Provincias que empiezan por Al y su superficie mostraría el siguiente valor:

Provincia: Álava, Superficie km2: 3.037
Provincia: Albacete, Superficie km2: 14.926
Provincia: Alicante, Superficie km2: 5.817
Provincia: Almería, Superficie km2: 8.775

Una variante con agrupaciones de provincias podría ser como:

Document.detailAgg('<@PRV:Datos:Pais>', 'Provincias: COUNT(*), Superficie total: SUM(<@PRV:Datos:Habitantes>)', '\n',null, "<@PRV:Propiedades:Nombre> LIKE 'Al%'",null,"<@PRV:Propiedades:Nombre>")

Por lo tanto, para el País España, el campo Provincias que empiezan por Al y su superficie mostraría el siguiente valor:

Provincias: 4, Superficie total: 32.155
Actualizado el 21 de noviembre de 2023
¿Te ha parecido útil este artículo?

Artículos relacionados