Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v19.8
entitySelection.orderByFormula( )

entitySelection.orderByFormula( ) 


 

entitySelection.orderByFormula ( fórmula {; ordenação}{; configurações} ) -> Resultado 
Parâmetro Tipo   Descrição
fórmula  Texto, Objeto in string Fórmula, ou
objeto Formula
ordenação  Inteiro longo in dk ascendente (padrão) ou dk descendente
configurações  Objeto in Parâmetros para a fórmula
Resultado  EntitySelection in 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:

  • texto: uma expressão 4D tal como  "Year of(this.birthDate)"
  • objeto: um objeto de fórmula válida criada usando os comandos Formula ou Formula from string.

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çõesformula 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



Ver também 

entitySelection.orderBy( )
QUERY BY FORMULA

 
PROPRIEDADES 

Produto: 4D
Tema: ORDA - seleção de entidade

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v17 R6

 
ARTICLE USAGE

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)