4D v18entitySelection.orderByFormula( ) |
|||||||||||
|
4D v18
entitySelection.orderByFormula( )
|
Constante | Valor | Comentario |
dk ascending | 0 | Orden de clasificación ascendente (predeterminado) |
dk descending | 1 | Orden de clasificación descendente (predeterminado) |
Dentro de la formula, la entidad procesada y, por lo tanto, sus atributos están disponibles a través del comando This (por ejemplo, This .lastName).
Puede pasar los parámetros a la formula utilizando la propiedad args (objeto) del parámetro paramsr: formula recibe el objeto settings.args en $1.
Ordenar estudiantes utilizando una fórmula como texto:
C_OBJECT($es1;$es2)
$es1:=ds.Students.query("nationality=:1";"French")
$es2:=$es1.orderByFormula("length(this.lastname)") //ascendente de forma predeterminada
$es2:=$es1.orderByFormula("length(this.lastname)";dk descending)
Mismo orden de clasificación pero utilizando un objeto fórmula:
C_OBJECT($es1;$es2;$formula)
$es1:=ds.Students.query("nationality=:1";"French")
$formula:=Formula(Length(This.lastname))
$es2:=$es1.orderByFormula($formula) // ascendente de forma predeterminada
$es2:=$es1.orderByFormula($formula;dk descending)
La fórmula se da como un objeto fórmula con parámetros; El objeto settings.args se recibe como $1 en el método computeAverage:
En este ejemplo, el campo objeto marca en la clase de datos Students contiene las calificaciones de los estudiantes para cada materia. Se utiliza un solo objeto fórmula para calcular la calificación promedio de un estudiante con diferentes coeficientes para la escuela A y la escuela B.
C_OBJECT($es1;$es2;$formula;$schoolA;$schoolB)
$es1:=ds.Students.query("nationality=:1";"French")
$formula:=Formula(computeAverage($1))
$schoolA:=New object() //settings object
$schoolA.args:=New object("english";1;"math";1;"history";1) // Coeficientes para calcular un promedio
//Ordenar alumnos según criterios de la escuela A
$es2:=$es1.entitySelection.orderByFormula($formula;$schoolA)
$schoolB:=New object() //settings object
$schoolB.args:=New object("english";1;"math";2;"history";3) // Coeficientes para calcular un promedio
//Ordenar a los estudiantes de acuerdo a los criterios de la escuela B
$es2:=$es1.entitySelection.orderByFormula($formula;dk descending;$schoolB)
//
// computeAverage method
// -----------------------------
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.marks)
$average:=$average+(This.marks[$subject]*$coefList[$subject])
End for each
$0:=$average/$sum
Producto: 4D
Tema: ORDA - EntitySelection
Manual de lenguaje 4D ( 4D v18)