計算式プラグインの TABLE_SORT を使って、テーブルのソート/フィルターを行うことが出来ます。
概要
- TABLE_SORT でテーブルを並べ替え・抽出できます。
- 編集中に自動で行順が変わると操作性が落ちるため、ボタンクリックで明示的に実行するのが実運用で安全です。
- ルックアップ/添付ファイルを含むテーブルは、レコード保存後イベントでソートします。
※編集画面で行位置を変えると、これらの項目で行ズレが発生します。
操作例
- ボタンクリックでソート/フィルター

- ルックアップ/添付があるテーブルは保存後にソート

アプリ設定
- ソート実行ボタンを置くための スペース を追加し、要素ID を設定します。
設定(計算式プラグイン)
- テーブルの計算式に TABLE_SORT を指定する場合は、**「循環参照を許可」**にチェック。
- レコード保存後イベントで実行する判定は
IF(EV_INFO("mode")="success" && $id, …)を使います。
※ 計算式に $id を含めると「保存後イベント」が走ります。
計算式
// APP: テーブルソート3 TABLE_SORT (2848)
// OPTION: 循環参照を許可
// header1: ($HEADER1) HEADER
DIALOG(
ARRAY("日付順にソート", "日付順にソートします"),
FSET(テーブル,
TABLE_SORT(テーブル,
TPSORT(日付) // 昇順
)
)
)
// header2: ($HEADER2) HEADER
DIALOG(
ARRAY("区分順にソート", "区分順にソートします"),
FSET(テーブル,
TABLE_SORT(テーブル,
TPSORT(区分) // 昇順
)
)
)
// sp1: (sp1) SPACER
BUTTON("数値順にソート",
FSET(テーブル,
TABLE_SORT(テーブル,
TPSORT(数値) // 昇順
)
)
)
// sp2: (sp2) SPACER
BUTTON("数値の逆順にソート",
FSET(テーブル,
TABLE_SORT(テーブル,
TPSORT(数値, 0) // 降順(0 指定)
)
)
)
// sp3: (sp3) SPACER
DIALOG(
ARRAY("数値未入力を削除", "数値が未入力の行を削除します"),
FSET(テーブル,
TABLE_SORT(テーブル,
// 使い分け例:
// - 空を除外: TPFILTER(数値 <> "")
// - 0 も除外: TPFILTER(数値 > 0)
TPFILTER(数値 <> "")
)
)
)
// テーブル.番号 NUMBER(1始まりの行番号)
ROWNO(テーブル) + 1
// テーブル2 SUBTABLE (editable)
// ルックアップ・添付などを含む場合は保存後に並べ替え
IF(EV_INFO("mode")="success" && $id,
TABLE_SORT(テーブル2,
TPSORT(数値T2) // 昇順
)
)
よく使うパターン
- 降順で日付新しい順
TABLE_SORT(テーブル, TPSORT(日付, 0))
- フィルターしてから並べ替え(数値が入っている行だけを金額降順)
TABLE_SORT(テーブル,
TPFILTER(数値 <> ""),
TPSORT(数値, 0)
)
注意点・ハマりどころ
- ルックアップ/添付ファイルありのテーブルは、編集画面で行の順番を変えない(保存後イベントで実施)。
- 自動トリガにすると編集中の行が動いてしまうため、ボタンクリックでの明示実行が推奨。
- 昇順/降順は
TPSORT(項目[, 0|1])- 省略/1 … 昇順
- 0 … 降順
- 未入力の扱いを明確に:
- 空だけ除外 →
TPFILTER(数値 <> "") - 0 も除外 →
TPFILTER(数値 > 0)
- 空だけ除外 →


