Colecções de consulta

Tradução automática de Deepl

A simplicidade é a derradeira sofisticação, e com mais de 40 métodos em 4D v16 R6 para gerir colecções, as coisas estão a tornar-se muito mais fáceis para si como programador. Não só o seu código está limpo e mais legível, como também está escrito em tempo recorde!

Neste post do blogue vamos dar uma vista de olhos sobre como os dois novos métodos, query e indices, permitir-lhe-á manipular e recuperar itens de uma colecção num piscar de olhos!

O query e indices métodos, como numa consulta 4D tradicional, são utilizados para manipular e recuperar itens de uma colecção. Funcionam exactamente da mesma forma, a única diferença está no resultado devolvido: query devolve uma colecção contendo todos os objectos que correspondem à condição de pesquisa definida pelo argumento da consulta, enquanto indices devolve uma colecção de índices.

Exemplo de base de dados: consultar colecções

Pode misturar dois tipos de operadores para consultar a sua colecção. As seguintes amostras de código mostram-lhe o que é possível e como proceder.

Como escrever uma consulta?

Exemplo inicial

Há duas maneiras possíveis de escrever uma pergunta:

  • consulta como uma string:

$c:=Novacolecção(Novo objecto("Id";128; "Cidade"; "Paris"; "Tempo";1))
$c.push(Novo objecto("Id";50; "Cidade"; "Nova Iorque"; "Tempo";-10))

$c.push(Novo objecto("Id";1792; "City"; "Tokyo"; "Weather";-5))
$c.push(Novo objecto("Id";2973; "City"; "Miami"; "Weather";15))

$col:=$c.query("Weather#0")
$col2:=$c.indices("Weather#0")

  • ou consulta com o titular do lugar. Desta forma, pode facilmente criar consultas dinâmicas, e 4D converte as suas variáveis para si:

$w:=$1
$col:=$c.consulta("Tempo#:1";$w)
$col2:=$c.índices("Tempo#:1";$w)

exemplo avançado

Os exemplos anteriores eram apenas para mostrar a sintaxe, mas obviamente para encontrar algo numa colecção de quatro elementos, um laço teria sido suficiente. A verdadeira força do query é quando se precisa de encontrar algo num objecto ou numa colecção que contenha uma grande quantidade de dados. O query é uma forma muito eficiente de aceder aos dados.

O exemplo abaixo mostra como é agora fácil encontrar o número de operações que um administrador realizou hoje:

// Save the current log file to JSON and put it in a collection
LOG FILE TO JSON("c:\\ExportLogs")
$txt :=Document to text("c:\ExportLogs\JournalExport.json")
$col :=JSON Parse($txt)

// Count how many operations have been done by "Administrator"
$count :=$col.query("extraData.user_name=:1"; "Administrador")
.length

Operadores de comparação

Os operadores de comparação são utilizados para comparar uma expressão com outra. O resultado de uma comparação pode ser VERDADEIRO ou FALSO. Os operadores de comparação são:

  • =
  • #
  • <
  • >
  • <=
  • >=

$col:=$c.consulta("Tempo>0")
//$col=[{Id:128,City:Paris,Weather:1},{Id:2973,City:Miami,Weather:15}]
$col2:=$c.índices("Tempo>0")
//$col2=[0,3]

operadores lógicos

Os operadores lógicos são utilizados para testar a validade de uma condição. Tal como os operadores de comparação, devolvem VERDADEIRO ou FALSO. Os operadores lógicos são:

  • E
  • OU

$col:=$c.consulta("Id>50 AND (Tempo>10 OR Weather<0)")
//$col=[{Id:1792,City:Tokyo,Weather:-5},{Id:2973,City:Miami,Weather:15}]
$col2:=$c.índices("Id>50 AND (Tempo>10 OR Weather<0)")
//$col2=[2,3]

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.