Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entitySelection.orderByFormula( )
|
entitySelection.orderByFormula ( formula {; sortOrder}{; settings} ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
formula | Text, Objekt |
![]() |
Formel als String oder Formel als Objekt |
|||||
sortOrder | Lange Ganzzahl |
![]() |
dk aufsteigend (Standard) oder dk absteigend | |||||
settings | Objekt |
![]() |
Parameter für die Formel | |||||
Funktionsergebnis | EntitySelection |
![]() |
Neue sortierte Entity Selection | |||||
Die Methode entitySelection.orderByFormula( ) gibt eine neue sortierte Entity Selection mit allen Entities der Entity Selection in der Reihenfolge zurück, die mit formula und optional mit den Parametern sortOrder und settings definiert wurde.
Hinweis: Diese Methode ändert nicht die ursprüngliche Entity Selection.
Im Parameter formula können Sie einen Text oder ein Objekt übergeben:
Der Parameter formula wird für jede Entity der Entity Selection ausgeführt, das Ergebnis definiert die Position der Entity in der zurückgegebenen Entity Selection. Es muss ein sortierbarer Typ sein (boolean, Datum, Zahl, Text, Zeit, Null).
Hinweis: Ein Ergebnis Null ist immer der kleinste Wert
Standardmäßig, also ohne den Parameter sortOrder, wird die zurückgegebene Entity Selection in aufsteigender Reihenfolge sortiert. Optional können Sie in sortOrder einen der folgenden Werte übergeben:
Konstante | Wert | Kommentar |
dk ascending | 0 | Aufsteigende Sortierreihenfolge (Standard) |
dk descending | 1 | Absteigende Sortierreihenfolge |
In formula sind die bearbeitete Entity sowie ihre Attribute über den Befehl This verfügbar (z.B. This.lastName).
Über args (Objekt) des Parameters settings können Sie in formula Parameter übergeben: formula empfängt das Objekt settings.args in $1.
Studenten mit einer Formel als Text sortieren:
C_OBJECT($es1;$es2)
$es1:=ds.Students.query("nationality=:1";"French")
$es2:=$es1.orderByFormula("length(this.lastname)") //standardmäßig aufsteigende Sortierung
$es2:=$es1.orderByFormula("length(this.lastname)";dk descending)
Gleiche Sortierreihenfolge mit einer Formel als Objekt:
C_OBJECT($es1;$es2;$formula)
$es1:=ds.Students.query("nationality=:1";"French")
$formula:=Formula(Length(This.lastname))
$es2:=$es1.orderByFormula($formula) // standardmäßig aufsteigende Sortierung
$es2:=$es1.orderByFormula($formula;dk descending)
Die Formel ist als Objekt mit Parametern übergeben; das Objekt settings.args wird in der Methode computeAverage als $1 übergeben.
In diesem Beispiel enthält das Objektfeld marks in der dataClass Students die Noten der Studenten für jedes Fach. Über ein Objekt formula wird der Notendurchschnitt eines Studenten mit verschiedenen Koeffizienten für schoolA und schoolB berechnet.
C_OBJECT($es1;$es2;$formula;$schoolA;$schoolB)
$es1:=ds.Students.query("nationality=:1";"French")
$formula:=Formula(computeAverage($1))
$schoolA:=New object() //Objekt settings
$schoolA.args:=New object("english";1;"math";1;"history";1) // Faktoren zum Berechnen des Durchschnitts
//Studenten nach dem Kriterium school A sortieren
$es2:=$es1.orderByFormula($formula;$schoolA)
$schoolB:=New object() //Objekt settings
$schoolB.args:=New object("english";1;"math";2;"history";3)
//Studenten nach dem Kriterium school B sortieren
$es2:=$es1.orderByFormula($formula;dk descending;$schoolB)
//
// Methode computeAverage
// -----------------------------
C_TEXT($subject)
C_LONGINT($0;$average;$sum)
C_OBJECT($coefList;$1)
$coefList:=$1
$average:=0
$sum:=0
For each($subject;$coefList)
$sum:=$sum+Num($coefList[$subject])
End for each
For each($subject;This.marks)
$average:=$average+(Num(This.marks[$subject])*Num($coefList[$subject]))
End for each
$0:=$average/$sum
Produkt: 4D
Thema: ORDA - EntitySelection
Erstellt: 4D v17 R6
4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)