4D v19entitySelection.orderByFormula( ) |
|||||||||||
|
4D v19
entitySelection.orderByFormula( )
|
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
4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)