A recuperação da lista de elementos de dados únicos é sempre útil na manipulação de dados. Em alguns casos, a recuperação do número de ocorrências de cada valor é essencial. A função distinct das classes de Coleção e Seleção de entidades permite a recuperação de uma lista de valores únicos. Com 4D v20, também se pode recuperar o número de ocorrências de cada valor distinto.
E isso não é tudo!
Um objeto na base de dados pode ser utilizado para guardar dados personalizados introduzidos pelo usuário. Assim, no lado do código, é necessário conhecer todos os caminhos possíveis para o objeto. A função distinctPaths foi adicionada à classe de Seleção de entidades.
Aqui está tudo o que precisa de saber.
Nova opção para distinct
A sintaxe é idêntica para ambas as classes, Coleção e Seleção de entidades. Deve passar a constante ck count values, ou dk count values, ao segundo parâmetro denominado opção para obter uma coleção de pares de atributos: value e count.
Se não passar a opção, o comportamento permanece o mesmo; obtém-se uma coleção de valores únicos.
exemplo com Coleção
Por exemplo, se quiser a lista de valores únicos de uma coleção de categorias e o número de ocorrências de cada categoria:
var $col; $category : Collection
$category:=New Collection("Familia";"Amigo";"Trabalho";"Familia";"Pessoal")
$col:=$category.distinct(ck count values)
O resultado é:
[ {"value":"Familia","count":2}, {"value":"Amigo","count":1}, {"value":"Personal","count":1}, {"value":"Trabalho","count":1} ]
Exemplo com Seleção de EntidadeS
Por exemplo, se quiser obter a lista de países dos meus contatos e o número de contatos por país:
var $countries : Collection
)
$countries :=ds.Contact.all().distinct("país";dk count values
O resultado é:
[ {"value":"France","count":2}, {"value":"Morocco","count":10}, {"value":"Germany","count":3} ]
Nova função distinct paths
A função distinctPaths da classe de Seleção da entidades retorna a lista de caminhos distintos encontrados no seu campo de objeto indexado. Deve passar o nome do campo de objeto indexado como parâmetro. Esta função é equivalente ao comando DISTINCT ATTRIBUTE PATHS.
Exemplo
Por exemplo, se quiser recuperar todos os caminhos possíveis do campo de objetos “endereco”:
var $paths : Collection
$ paths :=ds.Contact.all().distinctPaths("endereco")
O resultado é:
[ "Number", "StreetAddress", "ExtendedAddress", "City", "ZipCode", "Country" ]
A seguir…
Sinta-se à vontade para partilhar o seu feedback e ideias no fórum 4D para nos ajudar a continuar a melhorar o produto.