FileMakerでポータルを使っていると、「行を並べ替えるボタンを付けたい」「ユーザーにとって見やすい順番で表示したい」と感じることが多いと思います。ですが実際にやろうとすると、どこを触ればよいのか分かりにくく、スクリプトも必要そうで尻込みしてしまう方も少なくありません。
この記事では、FileMakerのポータルに「並べ替えボタン」を実装するための基本的な考え方と、具体的な操作手順をやさしい表現で解説します。まずは「一方向のソートボタン」を作り、その後「昇順・降順を切り替えるボタン」に発展させる流れで見ていきます。
ポータル並べ替えの基本的な考え方
ポータルに表示される行は、「関連レコードの並び順」によって決まります。この並び順を変えるのが「並べ替え」です。基本的に並べ替えには次の2つのやり方があります。
- リレーションシップの「並び替え設定」を使う
- スクリプトで関連レコードを並べ替える
ポータルにクリックできるボタンを置いて、ユーザーが自由にソート順を変えられるようにしたい場合は、スクリプトを使う方法が分かりやすく、応用も効きます。この記事では、この「スクリプトで並べ替える」方法を前提に説明します。
前提となるレイアウトとポータルの準備
まずは、次のような構成を前提にします。
- 親テーブル:請求書(Invoices)
- 子テーブル:請求明細(InvoiceLines)
- 請求書レイアウトに、請求明細のポータルを配置
ポータル内には、例えば「商品名」「数量」「単価」「金額」といったフィールドを表示している状態を想定します。この「商品名で並べ替え」や「金額の高い順で並べ替え」ボタンを作っていく流れです。
ステップ1:ポータル用の並べ替えスクリプトを作る
まずは、シンプルに「特定の1つのフィールドで昇順に並べ替える」スクリプトを作成します。
- メニューの「スクリプト」→「スクリプトワークスペース」を開く
- 新規スクリプトを作成し、名前を「ポータル並べ替え(商品名昇順)」など分かりやすく付ける
- スクリプトステップに「関連レコードの並べ替え」を追加する
- 「指定…」をクリックし、ターゲットにポータルが参照している関連テーブル(例:請求明細)を指定する(必要に応じて「現在のレイアウト上の関連レコードのみ」を選択)
- 「並べ替え順」の設定で「商品名」フィールドを昇順に設定する
- 最後に「ポータルを更新」や「ウインドウ内容を再表示」を入れて表示をリフレッシュしておくと安心
ポイントは、「どのテーブルのレコードを並べ替えるのか」と「どのフィールドで並べ替えるのか」をきちんと指定することです。ここまでできれば、あとはこのスクリプトを呼び出すボタンをポータル付近に置くだけです。
ステップ2:ポータルヘッダーに並べ替えボタンを配置
次に、ポータルの上部(ヘッダー部分)に並べ替えボタンを配置します。見た目としては、「列見出し自体をクリックすると並べ替わる」ように作ると、表計算ソフトに近い使い心地になります。
- レイアウトモードに切り替える
- ポータルの一番上の行(ヘッダー部分)にテキストオブジェクトを配置し、「商品名▲」などと入力する
- そのテキストオブジェクトを選択し、「ボタンとして設定」または「ボタンバー」として設定する
- 先ほど作成したスクリプト「ポータル並べ替え(商品名昇順)」を割り当てる
- ブラウズモードに戻り、ボタンをクリックして並び順が変わるか確認する
これで、商品名の昇順に並べ替える簡単なソートボタンが実装できます。まずは一つ作って、正しく動作するかを確認してから、他の列にも応用していくとスムーズです。
ステップ3:昇順・降順を切り替えるボタンに発展させる
次のステップとして、「同じボタンをクリックするたびに、昇順⇔降順が切り替わる」形にしてみましょう。この場合は、並び順を覚えておくためのフィールドや変数を用意する必要があります。
並び順を記録するためのフィールドを用意
- 親テーブル(請求書)に、グローバルフィールドを1つ追加します。例:「g_並べ替え状態」
- このフィールドに、「product_asc」「product_desc」など、現在の状態を文字で保存するイメージです。
スクリプトで状態に応じて並べ替え
「商品名の並べ替えスクリプト」を少し発展させて、以下のような流れにします。
- フィールド g_並べ替え状態 の内容を確認する
- もし「product_asc」なら、商品名を「降順」で並べ替え、g_並べ替え状態 を「product_desc」に変更
- もし「product_desc」または空欄なら、商品名を「昇順」で並べ替え、g_並べ替え状態 を「product_asc」に変更
- 最後に「ポータルを更新」や「ウインドウ内容を再表示」で画面をリフレッシュ
これにより、同じボタンをクリックするたびに、昇順と降順が切り替わるようになります。見た目としては、テキストオブジェクトに「商品名▲」や「商品名▼」などと表示し、状態に合わせて表示内容を切り替える方法もあります。
複数の並べ替え条件を用意するコツ
実務では、「商品名順」「金額の高い順」「行番号順」など、いくつかのソートパターンを用意したくなることが多いです。基本的な考え方は同じですが、次のように整理しておくと管理しやすくなります。
- 並べ替え種類ごとに、スクリプトを分ける(例:ポータル並べ替え_商品名、ポータル並べ替え_金額 など)
- 共通する処理(ポータル更新やエラーチェック)は、「サブスクリプト」にまとめる
- フィールド名やスクリプト名に、どのテーブルの、どの列かが分かる名前を付ける
最初から複雑にしすぎず、「まずは1列だけ」「次に昇順・降順」「最後に列を増やす」という順番で段階的に作っていくのがポイントです。
まとめ:シンプルな仕組みから段階的に
ポータルの並べ替えボタンは、FileMakerの画面を使いやすくするうえで非常に効果的な工夫です。しかし、一度に多機能なものを作ろうとすると、スクリプトやリレーションの設定が複雑に感じられて挫折しがちです。
まずは、
- 「1つの列を昇順で並べ替えるだけ」のスクリプトを作る
- そのスクリプトをポータルのヘッダーにボタンとして配置する
- 慣れてきたら、昇順・降順の切り替えや、他の列への応用にチャレンジする
という流れで、少しずつ機能を増やしていくと理解しやすく、トラブルも少なくなります。この記事を参考に、自分のファイルに合った「見やすくて操作しやすいポータルレイアウト」を作ってみてください。