SORT ARRAY
SORT ARRAY ( array {; array2 ; ... ; arrayN}{; > または <} )
引数 | 型 | 説明 | |
---|---|---|---|
array | Array | → | ソートする配列 |
> または < | 演算子 | → | ">" : 昇順ソート, または "<" : 降順ソート, または 省略した場合降順ソート |
説明
SORT ARRAYコマンドは、1つまたは複数の配列を昇順や降順にソートします。
注意:
- Pointer 配列や Picture 配列のソートは行えません。二次元配列の要素(例えば a2DArray{$vlThisElem})をソートすることはできますが、二次元配列そのもの(a2DArray)をソートすることはできません。
- Object 型の配列をソートすることはできます。Null 要素はグループ化され、配列の要素は内部的な順番によってソートされます。
最後の引数は、ソートの昇順または降順を指定します。引数に大なり記号(>)を指定すると昇順にソートします。引数に小なり記号(<)を指定すると降順にソートします。省略した場合は昇順にソートします。
複数の配列を指定した場合、すべての配列が最初の配列の順番でソートされます。各配列ごとに個々にソートするわけではありません。その代り、同期した配列をソートしたい場合には MULTI SORT ARRAY コマンドを使用することができます。
例題 1
以下の例は2つの配列を作成し、companyでソートします:
ALL RECORDS([People])
SELECTION TO ARRAY([People]Name;asNames;[People]Company;asCompanies)
SORT ARRAY(asCompanies;asNames;>)
しかし、SORT ARRAY コマンドはマルチレベルソートを行わないため、会社ごとの従業員名の順序はばらばらのままです。各会社毎に従業員名をソートするには、次のようにします:
ALL RECORDS([People])
ORDER BY([People];[People]Company;>;[People]Name;>)
SELECTION TO ARRAY([People]Name;asNames;[People]Company;asCompanies)
例題 2
次の例では、[People]テーブルから名前をフローティングウィンドウに表示します。ウィンドウ上のボタンをクリックすると、名前のリストをAからZへ、またはZからAへソートします。同じ名前の人が複数存在するため、インデックス付きで重複不可である[People]ID numberフィールドを使用できます。名前のリストをクリックすると、クリックした名前を持つレコードを取得します。同期がとられ、表示されないalIDs配列を利用することにより、必ずクリックした名前に対応するレコードにアクセスできます:
// asNames配列オブジェクトメソッド
Case of
:(Form event code=On Load)
ALL RECORDS([People])
SELECTION TO ARRAY([People]Name;asNames;[People]ID number;alIDs)
SORT ARRAY(asNames;alIDs;>)
:(Form event code=On Unload)
CLEAR VARIABLE(asNames)
CLEAR VARIABLE(alIDs)
:(Form event code=On Clicked)
If(asNames#0)
// 正しいレコードを取得するためにalIDsを使用する
QUERY([People];[People]ID Number=alIDs{asNames})
// レコードの処理を行う
End if
End case
// bA2Z ボタンオブジェクトメソッド
// 配列を昇順でソートし、かつ同期を保つ
SORT ARRAY(asNames;alIDs;>)
// bZ2A ボタンオブジェクトメソッド
// 配列を降順でソートし、かつ同期を保つ
SORT ARRAY(asNames;alIDs;<)
参照
Find in sorted array
MULTI SORT ARRAY
ORDER BY
SELECTION TO ARRAY