ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entitySelection.orderByFormula( )
|
entitySelection.orderByFormula ( formula {; sortOrder}{; settings} ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
formula | テキスト, オブジェクト |
![]() |
フォーミュラ文字列、または フォーミュラオブジェクト |
|||||
sortOrder | 倍長整数 |
![]() |
dk ascending (デフォルト)またh dk descending | |||||
settings | オブジェクト |
![]() |
フォーミュラの引数 | |||||
戻り値 | EntitySelection |
![]() |
新しい順列ありのエンティティセレクション | |||||
entitySelection.orderByFormula( ) メソッドは、エンティティセレクションの全てのエンティティを格納し、formula 引数および(任意の)sortOrder と settings 引数で定義された順番に並べられた、順列ありの新しいエンティティセレクションを返します。
注: このメソッドは元のエンティティセレクションは変更しません。
formula 引数には、テキストまたオブジェクトを渡すことができます:
formula 引数のフォーミュラはエンティティセレクションのそれぞれのエンティティに対して実行され、その結果は返されるエンティティセレクション内でのエンティティの位置を決定するのに使用されます。結果は何らかの並べ替え可能な型(ブール、日付、数値、テキスト、時間、Null)である必要があります。
注: Null 値の結果は常に最小の値とみなされます。
デフォルトで、sortOrder引数を省略した場合、返されるエンティティセレクションは昇順に並べられます。オプションとして、sortOrder 引数に以下の値のいずれか一つを渡すことができます:
定数 | 値 | コメント |
dk ascending | 0 | 昇順(デフォルト) |
dk descending | 1 | 降順 |
formula 引数内部において、処理されたエンティティとその属性はThis コマンドを通して利用可能です(例えば、This.lastName など)。
formula 引数には、settings 引数のargs プロパティ(オブジェクト)を使用することで引数を渡すことが可能です。このときformula 引数は、settings.args オブジェクトを$1 に受け取ります。
テキストとして渡されたフォーミュラを使用して学生を並べ替えします:
C_OBJECT($es1;$es2)
$es1:=ds.Students.query("nationality=:1";"French")
$es2:=$es1.orderByFormula("length(this.lastname)") // デフォルトは昇順
$es2:=$es1.orderByFormula("length(this.lastname)";dk descending)
同じ並び方を、フォーミュラオブジェクトを使用して取得する場合を考えます:
C_OBJECT($es1;$es2;$formula)
$es1:=ds.Students.query("nationality=:1";"French")
$formula:=Formula(Length(This.lastname))
$es2:=$es1.orderByFormula($formula) // デフォルトは昇順
$es2:=$es1.orderByFormula($formula;dk descending)
フォーミュラは引数付きのformula オブジェクトとして渡されます。settings.args オブジェクトは、computeAverage メソッドに$1 として受け取られます。
この例題では、Students データクラス内のmarks オブジェクトフィールドにはそれぞれの科目ごとの生徒の成績が格納されています。単一のフォーミュラオブジェクトを使用して、scoolA とschoolB に対して異なる係数で生徒の平均の成績を計算します。
C_OBJECT($es1;$es2;$formula;$schoolA;$schoolB)
$es1:=ds.Students.query("nationality=:1";"French")
$formula:=Formula(computeAverage($1))
$schoolA:=New object() // 設定オブジェクト
$schoolA.args:=New object("english";1;"math";1;"history";1) // 平均を計算するための係数
// school A 条件に応じて学生を並べ替え
$es2:=$es1.entitySelection.orderByFormula($formula;$schoolA)
$schoolB:=New object() // 設定オブジェクト
$schoolB.args:=New object("english";1;"math";2;"history";3)
// school B 条件に応じて学生を並べ替え
$es2:=$es1.entitySelection.orderByFormula($formula;dk descending;$schoolB)
//
// 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
プロダクト: 4D
テーマ: ORDA - エンティティセレクション
初出: 4D v17 R6
ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)