| 4D v18entitySelection.orderByFormula( ) | |||||||||||
| 
 | 
    4D v18
 entitySelection.orderByFormula( ) 
         | ||||||||||
| 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
	
        
        
	
	
	Manual de linguagem 4D ( 4D v18)
	
	
	
 Adicionar um comentário
Adicionar um comentário