Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entitySelection.orderByFormula( )
|
entitySelection.orderByFormula ( fórmula {; ordenação}{; configurações} ) -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
fórmula | Texto, Objeto |
![]() |
string Fórmula, ou objeto Formula |
|||||
ordenação | Inteiro longo |
![]() |
dk ascendente (padrão) ou dk descendente | |||||
configurações | Objeto |
![]() |
Parâmetros para a fórmula | |||||
Resultado | EntitySelection |
![]() |
Nova seleção de entidades ordenada | |||||
O método entitySelection.orderByFormula( ) retorna uma nova seleção de entidades ordenas contendo todas as entidades da seleção de entidades na ordem definida através de formula e, opcionalmente, os parâmetros ordenação e configurações .
Nota: Este méotod não muda a seleção de entidade original.
No parâmetro formula, pode passar texto ou um objeto:
A formula é executada para cada entidade da seleção de entidades e seu resultado é usado para definir a posição da entidade na seleção de entidades retornada. O resultado deve ser de tipo ordenável (booleano, data, texto, hora, null).
Nota: Um resultado null é sempre o menor valor.
Como padrão se omitir o parâmetro ordenação, a seleção de entidades resultante é ordenada de forma ascendente. Opcionalmente pode passar um dos valores abaixo no parâmetro ordenação:
Constante | Valor | Comentário |
dk ascending | 0 | Ordem de classificação ascendente (prédeterminado) |
dk descending | 1 | Ordem de classificação descendente (pré-determinado) |
Dentro da formula, a entidade processada e seus atributos estão disponíveis através do comando This (por exemplo, This .lastName).
Pode passar parâmetros a formula usando a propriedade argumentos (objeto) do parâmetro configurações: formula recebe o objeto settings.args em $1.
Ordenar os alunos com uma fórmula fornecida como texto:
C_OBJECT($es1;$es2)
$es1:=ds.Students.query("nationality=:1";"French")
$es2:=$es1.orderByFormula("length(this.lastname)") //ascendendente como padrão
$es2:=$es1.orderByFormula("length(this.lastname)";dk descending)
Mesma ordenação mas usando um objeto fórmula:
C_OBJECT($es1;$es2;$formula)
$es1:=ds.Students.query("nationality=:1";"French")
$formula:=Formula(Length(This.lastname))
$es2:=$es1.orderByFormula($formula) //ascendendente como padrão
$es2:=$es1.orderByFormula($formula;dk descending)
Uma fórmula é dada como um objeto fórmula com parâmetros: objeto settings.args é recebido como $1 no método computeAverage.
Neste exemplo, o campo objeto marks (notas) na dataClass Students contém as notas dos estudantes para cada matéria. Um único objeto fórmula é usado para calcular a nota média do aluno com diferentes coeficientes para schoolA e schoolB.
C_OBJECT($es1;$es2;$formula;$schoolA;$schoolB)
$es1:=ds.Students.query("nationality=:1";"French")
$formula:=Formula(computeAverage($1))
$schoolA:=New object() //objeto settings
$schoolA.args:=New object("english";1;"math";1;"history";1) // Coeficientes para calcular uma média
//Ordena os alunos de acordo com os critérios da school A
$es2:=$es1.entitySelection.orderByFormula($formula;$schoolA)
$schoolB:=New object() //objeto settings
$schoolB.args:=New object("english";1;"math";2;"history";3) // Coeficientes para calcular uma média
//Ordena os alunos de acordo com os critérios da school B
$es2:=$es1.entitySelection.orderByFormula($formula;dk descending;$schoolB)
//
// método 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.marks)
$average:=$average+(This.marks[$subject]*$coefList[$subject])
End for each
$0:=$average/$sum
Produto: 4D
Tema: ORDA - seleção de entidade
Criado por: 4D v17 R6
Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)
Manual de linguagem 4D ( 4D v19.4)
Manual de linguagem 4D ( 4D v19.5)
Manual de linguagem 4D ( 4D v19.6)
Manual de linguagem 4D ( 4D v19.7)
Manual de linguagem 4D ( 4D v19.8)