Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v19.8
entitySelection.orderByFormula( )

entitySelection.orderByFormula( ) 


 

entitySelection.orderByFormula ( formule {; ordreTri}{; parametres} ) -> Résultat 
Paramètre Type   Description
formule  Texte, Objet in Chaîne formule, ou objet formule
ordreTri  Entier long in dk ascending (par défaut) ou dk descending
parametres  Objet in Paramètre(s) de la formule
Résultat  EntitySelection in Nouvelle sélection d'entités triée

La méthode entitySelection.orderByFormula( ) renvoie une nouvelle sélection d'entités ordonnée contenant toutes les entités de la sélection d'entités dans l'ordre spécifié par le paramètre formule et, éventuellement, les paramètres ordreTri et parametres.

Note : Cette méthode ne modifie pas la sélection d'entités d'origine.

Dans le paramètre formule, vous pouvez passer un texte ou un objet :

  • texte : une expression 4D telle que "Annee de(this.dateNaissance)"
  • objet : un objet formule valide créé à l'aide de la commande Formule ou Formule sur chaine.

La formule est exécutée pour chaque entité de la sélection d'entités et son résultat sert à définir la position de l'entité dans la sélection d'entités retournée. Le résultat doit être de type triable (booléen, date, numérique, texte, heure, null).

Note : Un résultat null comporte toujours la plus petite valeur.

Par défaut, si vous omettez le paramètre ordreTri, la sélection d'entités qui en résulte est triée par ordre croissant. Vous pouvez évenetuellement passer l'une des valeurs suivantes dans le paramètre ordreTri :

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_OBJET($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_OBJET($es1;$es2;$formula)
 $es1:=ds.Students.query("nationalité=:1";"Français")
 $formula:=Formule(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_OBJET($es1;$es2;$formula;$ecoleA;$ecoleB)
 $es1:=ds.Students.query("nationalité=:1";"Français")
 $formula:=Formule(computeAverage($1))
 
 $ecoleA:=Creer objet() //objet paramètres
 $ecoleA.args:=Creer objet("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:=Creer objet() //objet paramètres
 $ecoleB.args:=Creer objet("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_TEXTE($subject)
 C_ENTIER LONG($0;$average;$sum)
 C_OBJET($coefList;$1)
 
 $coefList:=$1
 $average:=0
 $sum:=0
 
 Pour chaque($subject;$coefList)
    $sum:=$sum+$coefList[$subject]
 Fin de chaque
 
 Pour chaque ($subject;This.notes)
 $average:=$average+(This.notes[$subject]*$coefList[$subject])
Fin de chaque</p><p>
$0:=$average/$sum



Voir aussi  

CHERCHER PAR FORMULE
entitySelection.orderBy( )

 
PROPRIÉTÉS 

Produit : 4D
Thème : ORDA - EntitySelection
Nom intl. : entitySelection.orderByFormula( )

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v17 R6

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)