Recuperar la lista de elementos de datos únicos siempre es útil cuando se manipulan datos. En algunos casos, recuperar el número de ocurrencias de cada valor es esencial. La función distinct de las clases Collection y Entity selection permite recuperar una lista de valores únicos. Con 4D v20, también puede recuperar el número de ocurrencias de cada valor distinto.
¡Y hay más!
Se puede utilizar un objeto de la base de datos para guardar datos personalizados introducidos por el usuario. Por lo tanto, desde el punto de vista del código, es necesario conocer todas las posibles rutas de acceso al objeto. La función distinctPaths ha sido añadida a la clase Entity selection.
Aquí está todo lo que necesitas saber.
Nueva opción para distinct
La sintaxis es idéntica para ambas clases, Collection y Entity selection. Debes pasar la constante ck count values, o dk count values, al segundo parámetro llamado opción para obtener una colección de pares de atributos: value y count.
Si no pasa la opción, el comportamiento sigue siendo el mismo; obtiene una colección de valores únicos.
Ejemplo con COLECCIÓN
Por ejemplo, quiero la lista de valores únicos de una colección de categorías y el número de ocurrencias de cada categoría:
var $col; $category : Collection
$category:=New Collection("Familia"; "Amigo"; "Trabajo"; "Familia"; "Personal")
$col:=$category.distinct(ck count values)
El resultado es:
[ {"value":"Familia","count":2}, {"value":"Amigo","count":1}, {"value":"Trabajo","count":1}, {"value":"Personal","count":1} ]
Ejemplo de selección de entidades
Por ejemplo, quiero obtener la lista de países de mis contactos y el número de contactos por país:
var $countries : Collection
)
$countries :=ds.Contact.all().distinct("país";dk count values
El resultado es:
[ {"value":"France","count":2}, {"value":"Morocco","count":10}, {"value":"Germany","count":3} ]
Nueva función de distinctpaths
La función distinctPaths de la clase de selección de entidades devuelve la lista de rutas distintas encontradas en su campo de objeto indexado. Debe pasar el nombre del campo de objeto indexado como parámetro. Esta función es equivalente al comando DISTINCT ATTRIBUTE PATHS.
Ejemplo
Por ejemplo, quiero recuperar todas las posibles rutas del campo de objeto «direccion»:
var $paths : Collection
$ paths :=ds.Contact.all().distinctPaths("direccion")
El resultado es:
[ "Numero", "DireccionCalle", "DireccionExtendida", "Ciudad", "Código postal", "Pais ]
Siguiente…
No dude en compartir sus comentarios e ideas en el foro 4D para ayudarnos a seguir mejorando el producto.