Nachdem ich Ihnen gezeigt habe , wie Sie Daten erstellen, aktualisieren und löschen können, folgt nun ein neuer Eintrag in der ORDA-Serie. In diesem Beitrag erfahren Sie, wie Sie Ihren Datenspeicher in einem objektorientierten Modus abfragen können. Mit ORDA sind die Abfragen leichter und lesbarer, und Sie können mit objektorientierten Konzepten durch das gesamte Datenmodell navigieren!
Darüber hinaus können Sie mit ORDA sehr einfach mehrere zusammenhängende Tabellen abfragen, rekursive Beziehungen auf derselben Tabelle verwalten und mehrere logische Operatoren in einer einzigen Abfrage verwenden. Außerdem müssen Sie sich nicht um die Festlegung von Beziehungen zwischen Tabellen kümmern … weder manuell noch automatisch!
Abfrage mit DataStore Beispiel
ERSTE SCHRITTE MIT ORDA-ABFRAGEN
Wie bei einer Abfrage über eine Tabelle, erfolgt die Abfrage mit ORDA über eine Datenklasse (die einer Tabelle entspricht).
Es gibt mehrere Möglichkeiten, eine Datenklasse abzufragen. Im Folgenden wird ein kurzer Überblick gegeben. Für tiefergehende Informationen über die query()-Methode finden Sie in der Dokumentation.
1- Geben Sie die Abfrage als einen einzigen String ein
Hier ist eine Abfrage, um alle Mitarbeiter zu finden, deren Vorname mit „S“ beginnt:
C_OBJECT($employees)
)
$employees :=ds.Employee.query("firstName='S@'" // Query on Employee table
2- Geben Sie die Abfrage und die Werte separat mit Platzhaltern an
Nehmen wir an, Sie möchten alle Mitarbeiter ermitteln, deren Vorname mit „D“ oder „E“ beginnt. Bitte beachten Sie, dass die anzuwendenden Werte in der Abfrage versetzt sind und mit :1, :2, … :n bezeichnet werden, wie unten gezeigt:
C_OBJECT($employees)
)
$employees :=ds.Employee.query("vorname=:1 oder vorname=:2"; "D@"; "E@" // Query on Employee table
Variante: Sie können auch Platzhalter durch eine Sammlung verwenden, um die Werte bereitzustellen. Wie das folgende Beispiel zeigt:
C_OBJECT($employees;$params)
// You can use a collection to provide values to apply in the query
$params:=New object
$params .
parameters:=New collection("D@"; "E@")
$employees :=ds.Employee.query("vorname=:1 oder vorname=:2";$params) // Query on Employee table
einige Vorteile der neuen Art der Abfrage
EINFACHE VERWENDUNG EINES REKURSIVEN LINKS AUF EINE EINZELNE TABELLE
Betrachten Sie diesen rekursiven Link auf die Tabelle „Employee“:
Auf die klassische Weise
Dieser Code fragt alle Mitarbeiter ab, deren Vorname mit dem Buchstaben „A“ beginnt, wobei der Nachname des Managers mit dem Buchstaben „S“ beginnt:
ARRAY LONGINT(_managersIDs;0)
QUERY ([Employee];[Employee]firstName;"="; "A@")
CREATE SET ([Employee]; "a")
QUERY ([Employee];[Employee]lastName;"=";
"S@")
SELECTION TO ARRAY ([Mitarbeiter]ID;_managersIDs)
QUERY WITH ARRAY ([Mitarbeiter]managerID;_managersIDs)
CREATE SET ([Mitarbeiter]; "s")
INTERSECTION ("a"; "s"; "result")
USE SET ("result")
CLEAR SET ("a")
CLEAR SET("s")
mit orda
Diese Abfrage ist viel leichter…
C_OBJECT($entitySelection)
$entitySelection := ds.Employee.query("vorname=:1 und manager.nachname=:2"; "A@"; "S@")
Warten Sie nicht … fangen Sie jetzt an, ORDA zu verwenden, um kürzeren, saubereren und besser lesbaren Code zu erhalten!