Behandlung von Entitäten in einer Entitätenauswahl

Automatisch übersetzt von Deepl

ERSTER REKORD, LETZTER REKORD, NÄCHSTER REKORD, VORHERIGER REKORD; klingelt’s da bei Ihnen? Ich wette, das tut es. Sie haben sie bereits zur Handhabung von Selektionen verwendet! ORDA bietet nützliche und vertraute Methoden, um durch Entitäten in einer Entitätsauswahl zu navigieren – und natürlich auch einige Vorteile!

Zunächst einmal können Sie mehrere Entitätsselektionen gleichzeitig verwalten und unabhängig voneinander durch sie navigieren, während Sie normalerweise nur eine einzige „aktuelle Auswahl“ pro Tabelle verwalten können. Genau das werden wir uns in diesem Blogbeitrag ansehen.

Wir haben bereits gesehen, dass die Abfrage des Datenspeichers eine Entitätsauswahl liefert. ORDA bietet die Möglichkeit, sehr einfach auf die Entitäten in einer Entitätsauswahl zuzugreifen.

ORDA: Umgang mit Entitäten in Entitätsselektionen

ERSTELLEN UND FÜLLEN VON ENTITÄTSSELEKTIONEN

Eine leere Entitätsauswahl wird mit der newSelection() Methode erstellt. Sie können ihr auch Entitäten hinzufügen mit der add() Methode hinzufügen.

BEISPIEL

C_OBJECT($employee;$es)
C_TEXT ($name)

//Create a new empty entity selection
$es :=ds.Employee.newSelection()
Repeat
$name :=Request("Welcher Mitarbeiter?")
If (ok=1)
//Get the first employee whose last name is $name
$employee :=ds.Employee.query("lastName=:1";$name).first End if ()
//Add the entity to the new entity selection $es
If ($employee#Null)
$es .add($employee)
End if

Until (ok=0)
alert (String($es.length) + " Mitarbeiter wurden der neuen Entitätsauswahl hinzugefügt")

ZUGRIFF AUF ENTITÄTEN IN EINER ENTITÄTENAUSWAHL

Denken Sie daran, dass Sie durch die Entitäten in einer Entitätenauswahl mit der Methode for each Schleife durchlaufen. Hier ist ein kurzes Beispiel, aber schauen Sie sich auch diesen Blogpost an.

C_OBJECT($employeesParis;$employee;$status)

// Get employees working in Paris
$employeesParis :=ds.Employee.query("city='Paris'")
//Iterate through each employee
For each ($employee;$employeesParis)
$employee.lastName:=Uppercase($employee.lastName)
$status:=$employee.save()
End for each

Sie können auch eine Entität mit ihrem Index in eine Entitätsauswahl laden (der Index beginnt bei 0). Hier ist ein Beispiel:

C_OBJECT($gamers)
//Get all the gamers sorted by rank
$gamers :=ds.Gamer.all().orderBy("Rang")
if ($gamers.length >=3)
ALERT ("Die ersten drei sind: "+Char(13) \
+$gamers[0].lastName+Char(13)+$gamers[1].lastName+Char(13)+$gamers[2]
.lastName)
End if

ERSTE UND LETZTE ENTITÄTEN

Die first() und last() Methoden können Sie die erste oder letzte Entität einer Entitätsauswahl ermitteln. Diese Methoden können Null zurückgeben, wenn die Entitätsauswahl leer ist.

In dem folgenden Beispiel erhalten wir die erste Entität der $gamers Entitätsauswahl:

C_OBJECT($gamers;$first)
// Get the gamers whose last name starts with "H"
$gamers :=ds.Gamer.query("lastName='H@'")
// Get the first entity of the $gamers entity selection
$first :=$gamers.first()
If ($first#Null)
ALERT ("The first gamer has been found")
Else
ALERT ("The entity selection $gamers is empty")
End if

Vorherige UND nächste ENTITIES

Eine Entität kann zu einer Entitätsauswahl gehören. In diesem Fall können Sie durch die Entitäten einer Entitätsauswahl mit den Methoden previous() und next() Methoden durchlaufen.

In diesem Beispiel verwenden wir ein Formular, um eine Liste von Spielern anzuzeigen. Der Benutzer kann mit den Schaltflächen Vorherige und Nächste durch die Details der einzelnen Spieler navigieren.

Die Schaltfläche “ Next“ hat die folgende Objektmethode:

//Form.gamer is an entity, edited on the form. It belongs to an entity selection which is the entire list of gamers.
If ( . . ()# ) . := . . () FormgamernextNull
//Edit the next entity of the entity selection to which the Form.gamer entity belongs.
FormgamerFormgamernext
End if

Informationen über eine Entität

Und das ist noch nicht alles! Für jede beliebige Entität können Sie die Auswahl der Entität erhalten, aus der sie stammt. Gut zu wissen ist auch, dass es Methoden gibt, um kontextbezogene Informationen über eine Entität zu erhalten , z.B. um zu prüfen, ob sie zu einer bestimmten Entitätsauswahl gehört, um ihre Position in einer Entitätsauswahl zu erhalten, usw.

Hier haben wir zwei Entitätsselektionen ($employeesParis und $employeesNY). Die Methode selectedEmployee wählt einen Mitarbeiter in einer der beiden Selektionen aus. Wir können dann feststellen, zu welcher Entitätsauswahl dieser Mitarbeiter gehört, und zwar mit der contains() Methode:

C_OBJECT($employeesParis;$employeesNY;$employee)
// Get employees working in Paris
$employeesParis :=ds.Employee.query("city='Paris'")
// Get employees working in New York
$employeesNY :=ds.Employee.query("city='New York'")
// The method selectedEmployee returns an employee in one of the two given entity selections
$employee :=selectedEmployee($employeesParis;$employeesNY)

Case of
: ($employeesParis.contains($employee))
ALERT ("Der Mitarbeiter gehört zu der Entitätsauswahl $employeesParis")
: ($employeesNY.contains($employee))
ALERT ("Der Angestellte gehört zu der Entitätsauswahl $employeesNY")
End case

Hier haben wir eine Entitätsauswahl ($employeesParis). Die Methode selectedEmployee wählt einen Mitarbeiter daraus aus. Wir können den Index des Mitarbeiters in der Entitätsauswahl mit der indexOf() Methode:

C_OBJECT($employeesParis;$employee)
// Get employees working in Paris
$employeesParis :=ds.Employee.query("city='Paris'")
// The method selectedEmployee returns an employee in the given entity selection
$employee :=selectedEmployee ($employeesParis)
ALERT ("The index of the selected employee is " + String($employee.indexOf()))

Werfen Sie einen Blick auf das Datenbankbeispiel und Sie werden alles über dieses Thema wissen!

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert ist seit 2017 als Product Owner im 4D Produktteam tätig. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Marie-Sophie ist Absolventin der ESIGELEC Ingenieurschule und begann ihre Karriere als Ingenieurin bei IBM im Jahr 1995. Sie nahm an verschiedenen Projekten teil (Wartungs- oder Build-Projekte) und arbeitete als Cobol-Entwicklerin. Dann arbeitete sie als UML-Designerin und Java-Entwicklerin. In letzter Zeit bestand ihre Hauptaufgabe darin, funktionale Anforderungen zu analysieren und zu schreiben sowie Geschäfts- und Entwicklungsteams zu koordinieren.