計算式でテーブルソート/フィルター

計算式プラグインTABLE_SORT を使って、テーブルのソート/フィルターを行うことが出来ます。

概要

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


操作例

  • ボタンクリックでソート/フィルター

2025-08-10_08h40_44

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

2025-08-10_08h43_13


アプリ設定

  • ソート実行ボタンを置くための スペース を追加し、要素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)

参考

rex0220 計算式プラグイン テーブルソート TABLE_SORT関数版

「いいね!」 1