No.294 選択した順番にレコードをソートする | Claris FileMaker 10分でスキルアップ
▶ 動画を見る 📁 サンプルファイル

AI による要約

FileMaker の標準的なソート機能では、フィールドの値を基準に昇順・降順で並び替えることができます。しかし今回は、ユーザーがボタンを押した順番通りにレコードを並び替えるという、より柔軟なソート方法をご紹介します。FileMaker 2025 で新たに追加された [レコード一覧へ移動] スクリプトステップを活用して実現します。

この機能では、レイアウト上の「選択」ボタンを好きな順番に押していくと、その順番通りにレコードが並び替わります。追加選択やソート解除にも対応しており、実用的な操作感を実現しています。

仕組みとしては、「名簿」テーブルと「グローバル」テーブルの 2 つを使用します。「グローバル」テーブルには、ソート前のレコード順と選択されたレコードの順番をそれぞれグローバルフィールドに保存します。「選択」ボタンを押すたびにレコード ID が改行区切りで「g_選択順」に追加・削除され、ソートボタンを押すと選択済みのレコード ID と未選択のレコード ID を組み合わせた一覧を作成し、[レコード一覧へ移動] スクリプトステップでその並び順に移動することでソートを実現します。

また、[条件付き書式] を使って選択済みのボタンの色を青く変えることで、どのレコードが選択されているかを視覚的にわかりやすく表示しています。値一覧から指定した値を削除するカスタム関数と [GetRecordIDsFromFoundSet] 関数も組み合わせることで、シンプルかつ効率的なスクリプト構成となっています。

機能

  • ・グローバルフィールド ソート前のレコード順と選択したレコードの順番を保存するために「グローバル」テーブルに用意。どちらもグローバルフィールドとして設定しています。
  • ・カスタム関数 値一覧から指定した値を削除するカスタム関数を利用。ソート前の順番から選択済みレコード ID を除外し、選択されていないレコード ID の一覧を作成するために使用しています。
  • ・条件付き書式 「選択」ボタンが選択済みかどうかを視覚的に示すために使用。FilterValues で「g_選択順」に現在のレコード ID が含まれている場合にボタンの色を青に変更します。

スクリプト・スクリプトトリガ

  • ・フィールド設定 「g_選択順」や「g_ソート前順」グローバルフィールドへ値を保存・クリアするために使用。選択時はレコード ID を改行区切りで追記し、解除時は Substitute で該当 ID を削除します。
  • ・レコード一覧へ移動 レコード ID の一覧を指定して対象レコードへ移動するスクリプトステップ。指定したレコード ID の並び順でレコードがソートされる特性を利用して、選択順に並び替えを実現します。
  • ・レコードのソート解除 「全選択解除」ボタンのスクリプトでグローバルフィールドをクリアした後にソートを解除するために使用します。

関数

  • ・GetRecordIDsFromFoundSet 現在の対象レコードのレコード ID を一覧または JSON 配列で返す関数。タイプに「0」(ValueNumber)を指定することで改行区切りの値一覧として取得し、「g_ソート前順」に保存します。
  • ・FilterValues 値一覧の中に指定した値が含まれるかを確認するために使用。「g_選択順」に現在のレコード ID が存在するかチェックし、スクリプト引数の分岐や条件付き書式の判定に活用しています。
  • ・Substitute 「解除」時に「g_選択順」から該当レコード ID と改行を削除するために使用。検索テキストに「$ID & ¶」を指定し、置換テキストを空欄にすることで該当行を取り除きます。
  • ・Get ( レコード ID ) 現在表示中のレコードのレコード ID を取得するために使用。スクリプト引数の計算式や変数への保存など複数の箇所で活用しています。

字幕