Conheça a função Distinct melhorada

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.

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.