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!