version 3
SORT ARRAY (array{; array2; ...; arrayN}{; > または <})
| 引数 | 型 | 説明 | |
| array | 配列 | ソートする配列 | |
| > または < | > : 昇順ソート, または | ||
| < : 降順ソート, または | |||
| 省略した場合降順ソート |
説明
SORT ARRAYコマンドは、1つまたは複数の配列を昇順や降順にソートします。
Note: ポインタ配列やピクチャ配列のソートは行えません。2 次元配列の要素(例えばa2DArray{$vlThisElem})をソートすることはできますが、2次元配列そのもの(a2DArray)をソートすることはできません。
最後の引数は、ソートの昇順または降順を指定します。引数に“大なり”記号(>)を指定すると昇順にソートします。引数に“小なり”記号(<)を指定すると降順にソートします。省略した場合は昇順にソートします。
複数の配列を指定した場合、すべての配列が最初の配列の順番でソートされます。各配列ごとに個々にソートするわけではありません。この機能は、フォーム上のグループ化されたスクロールエリアを扱う場合に特に有用です。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=On Load)
ALL RECORDS([People])
SELECTION TO ARRAY([People]Name;asNames;[People]ID number;alIDs)
SORT ARRAY(asNames;alIDs;>)
: (Form event=On Unload)
CLEAR VARIABLE(asNames)
CLEAR VARIABLE(alIDs)
: (Form event=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;<)
参照
MULTI SORT ARRAY, ORDER BY, SELECTION TO ARRAY.