Abfrage von Sammlungen

Automatisch übersetzt von Deepl

Einfachheit ist die ultimative Raffinesse, und mit über 40 Methoden in 4D v16 R6 zur Verwaltung von Sammlungen werden die Dinge für Sie als Entwickler viel einfacher. Ihr Code ist nicht nur sauber und besser lesbar, sondern auch in Rekordzeit geschrieben!

In diesem Blogbeitrag werden wir uns ansehen, wie die beiden neuen Methoden, query und indiceses Ihnen ermöglichen, Elemente einer Sammlung im Handumdrehen zu bearbeiten und abzurufen!

Die Methoden query und indices werden wie bei einer herkömmlichen 4D Abfrage verwendet, um Elemente in einer Sammlung zu bearbeiten und abzurufen. Sie funktionieren genau gleich, der einzige Unterschied liegt im zurückgegebenen Ergebnis: query gibt eine Sammlung mit allen Objekten zurück, die der durch das Abfrageargument definierten Suchbedingung entsprechen, während indices eine Sammlung von Indizes zurückgibt.

Datenbankbeispiel: Abfrage von Sammlungen

Sie können zwei Arten von Operatoren mischen, um Ihre Sammlung abzufragen. Die folgenden Codebeispiele zeigen Ihnen, was möglich ist und wie Sie vorgehen können.

Wie schreibt man eine Abfrage?

Erstes Beispiel

Es gibt zwei Möglichkeiten, eine Abfrage zu schreiben:

  • Abfrage als String:

$c:=Newcollection(New object("Id";128; "City"; "Paris"; "Weather";1))
$c.push(New object("Id";50; "City"; "New-York"; "Weather";-10))
$c.push(Neues Objekt("Id";1792; "Stadt"; "Tokyo"; "Wetter";-5))
$c.push(Neues Objekt("Id";2973; "Stadt"; "Miami"; "Wetter";15))

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

  • oder Abfrage mit Platzhalter. Auf diese Weise können Sie leicht dynamische Abfragen erstellen, und 4D konvertiert Ihre Variablen für Sie:

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

Fortgeschrittenes Beispiel

Die vorangegangenen Beispiele dienten nur zur Veranschaulichung der Syntax, aber um etwas in einer Sammlung mit vier Elementen zu finden, hätte natürlich auch eine Schleife genügt. Die wahre Stärke der query Methode ist, wenn Sie etwas in einem Objekt oder einer Sammlung mit einer großen Datenmenge suchen müssen. Die Methode query Methode ist ein sehr effizienter Weg, um auf Daten zuzugreifen.

Das folgende Beispiel zeigt, wie einfach es jetzt ist, die Anzahl der Operationen zu ermitteln, die ein Administrator heute durchgeführt hat:

// 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

Vergleichsoperatoren

Vergleichsoperatoren werden verwendet, um einen Ausdruck mit einem anderen zu vergleichen. Das Ergebnis eines Vergleichs kann TRUE oder FALSE sein. Die Vergleichsoperatoren sind:

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

$col:=$c.query("Wetter>0")
//$col=[{Id:128,Stadt:Paris,Wetter:1},{Id:2973,Stadt:Miami,Wetter:15}]
$col2:=$c.indices("Wetter>0")
//$col2=[0,3]

Logische Operatoren

Logische Operatoren werden verwendet, um die Gültigkeit einer Bedingung zu prüfen. Wie Vergleichsoperatoren geben sie TRUE oder FALSE zurück. Die logischen Operatoren sind:

  • AND
  • OR

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

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.