DISTINCT ATTRIBUTE VALUES
DISTINCT ATTRIBUTE VALUES ( campoObjeto ; ruta ; arrayValores )
Parámetro | Tipo | Descripción | |
---|---|---|---|
campoObjeto | Field | → | Campo de objeto del que desea obtener la lista de valores de atributos distintos |
ruta | Text | → | Ruta de acceso del atributo cuyos valores distintos desea obtener |
arrayValores | Text array, Integer array, Boolean array, Date array, Time array | ← | Valores distintos en la ruta de atributos |
Descripción
Tema: Arrays
El comando DISTINCT ATTRIBUTE VALUES crea y llena el arrayValores con valores no repetidos (únicos) procedentes del atributo ruta en el campo campoObjeto para la selección actual de la tabla a la que pertenece el campo. Si campoObjeto no es un campo de objeto indexado, se devuelve un error.
Pase en ruta una ruta atributo válida. Utilice la notación punto estándar para definir rutas a atributos anidados, por ejemplo "empresa.direccion.numero". Tenga en cuenta que los nombres de atributos objeto son sensibles a las mayúsculas y minúsculas.
El array que pasó en arrayValores debe ser del mismo tipo que el atributo ruta pasado como parámetro, de lo contrario el array se vuelve a digitar. Sólo se admiten los siguientes tipos de arrays: numérico, texto, fecha y hora (los valores deben ser escalar: punteros, objetos, blobs o imágenes no son soportados).
Después de la llamada, el tamaño del array es igual al número de valores distintos que se encuentran en la selección. El comando no cambia la selección actual o el registro actual.
Utilización de la propiedad virtual .length
Puede utilizar la propiedad virtual "longitud" con este comando. Está disponible automáticamente para todos los atributos de tipo array, y ofrece el tamaño del array, es decir, el número de elementos que contiene. Esta propiedad está diseñada para ser utilizada en búsquedas (ver QUERY BY ATTRIBUTEQUERY BY ATTRIBUTE). También se puede utilizar con el comando DISTINCT ATTRIBUTE VALUES para obtener los diferentes tamaños de array para un atributo.
Ejemplo
Su base contiene un campo objeto [Customer]full_Data (indexado) con 12 registros:
Si ejecuta este código:
ARRAY LONGINT(aLAges;0)
ALL RECORDS([Customer])
//get the distinct values for the "age" attibute
DISTINCT ATTRIBUTE VALUES([Customer]full_Data;"age";aLAges)
El array aLAges obtiene los siguientes 9 elementos:
//aLAges{1}=33
//aLAges{2}=35
//aLAges{3}=36
//aLAges{4}=40
//aLAges{5}=42
//aLAges{6}=44
//aLAges{7}=52
//aLAges{8}=54
//aLAges{9}=60