4D v19entitySelection.orderByFormula( ) |
|||||||||||
|
4D v19
entitySelection.orderByFormula( )
|
Constante | Valeur | Comment |
dk ascending | 0 | Ordre de tri croissant (par défaut) |
dk descending | 1 | Ordre de tri décroissant |
Dans formule, l'entité qui est traitée ainsi que ses attributs sont disponibles via la commande This (par exemple, This.Nom).
Vous pouvez passer un ou plusieurs paramètres à formule à l'aide de la propriété args (objet) du paramètre parametres : formule reçoit l'objet settings.args dans $1.
Pour effectuer un tri d'étudiants à l'aide d'une formule présentée sous forme de texte :
C_OBJECT($es1;$es2)
$es1:=ds.Students.query("nationalité=:1";"Français")
$es2:=$es1.orderByFormula("length(this.nom)") //croissant par défaut
$es2:=$es1.orderByFormula("length(this.nom)";dk descending)
Pour effectuer le même tri dans le même ordre, mais présenté sous forme d'objet :
C_OBJECT($es1;$es2;$formula)
$es1:=ds.Students.query("nationalité=:1";"Français")
$formula:=Formula(LENGTH(This.nom))
$es2:=$es1.orderByFormula($formula) // croissant par défaut
$es2:=$es1.orderByFormula($formula;dk descending)
Une formule est donnée sous forme d'objet formule avec des paramètres; l'objet settings.args est reçu en tant que $1 dans la méthode computeAverage.
Dans cet exemple, le champ objet notes dans le dataclass Students contient les notes des étudiants dans chaque matière. Un seul objet formule est utilisé pour calculer la note moyenne des étudiants à l'aide de différents coefficients pour ecoleA and ecoleB.
C_OBJECT($es1;$es2;$formula;$ecoleA;$ecoleB)
$es1:=ds.Students.query("nationalité=:1";"Français")
$formula:=Formula(computeAverage($1))
$ecoleA:=New object() //objet paramètres
$ecoleA.args:=New object("anglais";1;"maths";1;"histoire";1) // Coefficients permettant de calculer la moyenne
//Trier les étudiants en fonction du critère ecoleA
$es2:=$es1.entitySelection.orderByFormula($formula;$ecoleA)
$ecoleB:=New object() //objet paramètres
$ecoleB.args:=New object("anglais";1;"maths";2;"histoire";3) // Coefficientspermettant de calculer une moyenne
//Trier les étudiants en fonction du critère ecoleB
$es2:=$es1.entitySelection.orderByFormula($formula;dk descending;$ecoleB)
//
// méthode 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+$coefList[$subject]
End for each
For each ($subject;This.notes)
$average:=$average+(This.notes[$subject]*$coefList[$subject])
End for each</p><p>
$0:=$average/$sum
Produit : 4D
Thème : ORDA - EntitySelection
4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)