Recuperare l’elenco degli elementi unici dei dati è sempre utile quando si manipolano i dati. In alcuni casi, recuperare il numero di occorrenze di ciascun valore è essenziale. La funzione distinct delle classi di selezione Collection ed Entity consente di recuperare un elenco di valori univoci. Con 4D v20, è possibile recuperare anche il numero di occorrenze di ciascun valore distinto.
E non è tutto!
Un oggetto del database può essere utilizzato per salvare i dati personalizzati inseriti dall’utente. Quindi, dal punto di vista del codice, è necessario conoscere tutti i possibili percorsi dell’oggetto. La funzione distinctPaths è stata aggiunta alla classe Entity selection.
Ecco tutto ciò che occorre sapere.
Nuova opzione per distinct
La sintassi è identica per entrambe le classi, Collection e Entity selection. È necessario passare la costante ck count values, o dk count values al secondo parametro chiamato opzione per ottenere un insieme di coppie di attributi: value e count.
Se non si passa l’opzione, il comportamento rimane lo stesso: si ottiene un insieme di valori unici.
esempio con Collection
Per esempio, voglio l’elenco dei valori unici di una collezione di categorie e il numero di occorrenze di ciascuna categoria:
var $col; $category: Collection
$category :=New Collection("Famiglia"; "Amico"; "Lavoro"; "Famiglia"; "Personale")
$col :=$category.distinct
(ck count values)
Il risultato è:
[ {"value":"Family","count":2}, {"value":"Friend","count":1}, {"value":"Personal","count":1}, {"value":"Work","count":1} ]
Esempio con la selezione delle entità
Ad esempio, voglio ottenere l’elenco dei paesi dei miei contatti e il numero di contatti per paese:
var $countries : Collection
)
$countries :=ds.Contact.all().distinct("paese";dk count values
Il risultato è:
[ {"value":"France","count":2}, {"value":"Morocco","count":10}, {"value":"Germany","count":3} ]
Nuova funzione Percorsi distinti
La funzione distinctPaths della classe Entity selection restituisce l’elenco dei percorsi distinti trovati nel campo dell’oggetto indicizzato. È necessario passare il nome del campo oggetto indicizzato come parametro. Questa funzione è equivalente al comando DISTINCT ATTRIBUTE PATHS.
Esempio
Ad esempio, si vogliono recuperare tutti i possibili percorsi del campo oggetto “indirizzo”:
var $paths : Collection
$ paths :=ds.Contact.all().distinctPaths("indirizzo")
Il risultato è:
[ "Numero", "StreetAddress", "ExtendedAddress", "City", "ZipCode", "Paese" ]
Avanti…
Non esitate a condividere il vostro feedback e le vostre idee sul forum 4D per aiutarci a migliorare ulteriormente il prodotto.