domingo, 18 de noviembre de 2018

► Comprobar que un campo sólo tiene un valor

Algunas veces necesitamos realizar operaciones sobre objetos dependiendo de si un campo tiene sólo un valor o más de uno distintos.
Ejemplo: Se puede usar para mostrar el escudo de una localidad cuando el usuario sólo tiene acceso (restringido por la sección de acceso) a esa localidad y a ninguna más.

La mejor forma de hacerlo es con la expresión: not IsNull(Only({1} <campo>))

En nuestro ejemplo sería not IsNull(Only({1} Localidad))


En condiciones controladas, se puede usar la función GetSelectedCount (), pero no podemos esperar que el usuario haga una selección o no.
Si no hace selecciones, no funcionaría. Si hace varias selecciones en otros campos, esas selecciones también afectan al campo de la función GetSelectedCount de modo que puede no quedar ningún valor seleccionable. En este último caso habría que crear una expresión set analysis bastante compleja que limpie todos los campos candidatos a hacer selecciones sobre ellos:
{<campo1=, campo2=,…..campoN=>}


Con ONLY( {1} <campo>) no dependemos de las selecciones realizadas.
Esta función devuelve el valor en caso de que todos los registros tengan el mismo valor o nulo en caso de que los registros tengan varios valores distintos.

Es el equivalente a hacer COUNT({1} DISTINCT Localidad), pero la función Count siempre es más pesada y afecta negativamente al rendimiento.

Otra forma de hacerlo es usando la función inter-registro FieldValueCount('campo'), que devuelve el nº de valores distintos que tiene un campo. Observese que el campo va entre comillas simples.

No hay comentarios:

Publicar un comentario