4D v19

entitySelection.orderByFormula( )

Home

 
4D v19
entitySelection.orderByFormula( )

entitySelection.orderByFormula( )  


 

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:

  • Text: Ein 4D Ausdruck wie "Year of(this.birthDate)"
  • Objekt: ein gültiges Objekt Formel, erstellt mit dem Befehl Formula oder Formula from string.

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



Siehe auch 

entitySelection.orderBy()
QUERY BY FORMULA

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: ORDA - EntitySelection

 
SEITENINHALT 
 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)