Raccolte di query

Tradotto automaticamente da Deepl

La semplicità è il massimo della sofisticazione e con oltre 40 metodi di gestione delle collezioni in 4D v16 R6, le cose diventano molto più facili per gli sviluppatori. Non solo il codice è più pulito e leggibile, ma viene anche scritto in tempi record!

In questo post daremo un’occhiata a come i due nuovi metodi, query e indicesvi permetteranno di manipolare e recuperare elementi da un insieme in un attimo!

I metodi query e indices come in una query 4D tradizionale, sono usati per manipolare e recuperare gli elementi di un insieme. Funzionano esattamente allo stesso modo, l’unica differenza sta nel risultato restituito: query restituisce un insieme contenente tutti gli oggetti che corrispondono alla condizione di ricerca definita dall’argomento della query, mentre indices restituisce un insieme di indici.

Esempio di database: interrogare le collezioni

È possibile combinare due tipi di operatori per interrogare le collezioni. I seguenti esempi di codice mostrano cosa è possibile fare e come procedere.

Come scrivere una query?

Esempio iniziale

Esistono due modi possibili per scrivere una query:

  • query come stringa:

$c:=Newcollection(New object("Id";128; "City"; "Paris"; "Weather";1))
$c.push(New object("Id";50; "City"; "New-York"; "Weather";-10))
$c.push(Nuovo oggetto("Id";1792; "Città"; "Tokyo"; "Meteo";-5))
$c.push(Nuovo oggetto("Id";2973; "Città"; "Miami"; "Meteo";15))

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

  • o query con segnaposto. In questo modo, è possibile creare facilmente query dinamiche e 4D converte le variabili per voi:

$w:=$1
$col:=$c.query("Weather#:1";$w)
$col2:=$c.indices("Weather#:1";$w)

esempio avanzato

Gli esempi precedenti servivano solo a mostrare la sintassi, ma ovviamente per trovare qualcosa in un insieme di quattro elementi sarebbe stato sufficiente un ciclo. La vera forza del metodo query è quando si deve trovare qualcosa in un oggetto o in un insieme contenente una grande quantità di dati. Il metodo query è un modo molto efficiente per accedere ai dati.

L’esempio seguente mostra come sia facile trovare il numero di operazioni che un amministratore ha eseguito oggi:

// 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"; "Administrator").length

Operatori di confronto

Gli operatori di confronto vengono utilizzati per confrontare un’espressione con un’altra. Il risultato di un confronto può essere VERO o FALSO. Gli operatori di confronto sono:

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

$col:=$c.query("Weather>0")
//$col=[{Id:128,Città:Parigi,Meteo:1},{Id:2973,Città:Miami,Meteo:15}]
$col2:=$c.indices("Weather>0")
//$col2=[0,3]

operatori logici

Gli operatori logici sono utilizzati per verificare la validità di una condizione. Come gli operatori di confronto, restituiscono VERO o FALSO. Gli operatori logici sono:

  • AND
  • O

$col:=$c.query("Id>50 AND (Weather>10 OR Weather<0)")
//$col=[{Id:1792,Città:Tokyo,Meteo:-5},{Id:2973,Città:Miami,Meteo:15}]
$col2:=$c.indices("Id>50 AND (Weather>10 OR Weather<0)")
//$col2=[2,3]

Fabrice Mainguené
- Product Owner -Fabrice Mainguené si è unito al team di 4D Program nel novembre 2016. In qualità di Product Owner, è incaricato di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente.Dopo aver conseguito una laurea in Informatica presso il CNAM, Fabrice è entrato a far parte di una piccola società di pubblicazione di software come sviluppatore Windev. In seguito ha lavorato per diverse aziende del settore industriale e commerciale come sviluppatore Windev e web e come consulente tecnico su nuove funzionalità.