Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19.8
entitySelection.orderByFormula( )

entitySelection.orderByFormula( ) 


 

entitySelection.orderByFormula ( formula {; sortOrder}{; settings} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
formula  Text, Objekt in Formel als String oder
Formel als Objekt
sortOrder  Lange Ganzzahl in dk aufsteigend (Standard) oder dk absteigend
settings  Objekt in Parameter für die Formel
Funktionsergebnis  EntitySelection in 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:

  • 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 

Erstellt: 4D v17 R6

 
ARTIKELVERWENDUNG

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)