FileMakerらくらくポータルソート!
- ほうがん
- 2023年6月19日
- 読了時間: 6分
更新日:2024年5月20日

はじめに
FileMakerではリスト形式でのソートはスクリプトでも手動でも自由に実行できます。しかし、ポータル表示はソートが固定になってしまい、ポータル内のある値を基準に自由にソートを変更したいと思ってもFileMakerの標準機能では実現できません。
今回は、住所録ファイルを例に、ポータルに表示している、氏名よみでの昇順/降順ソート、生年月日での昇順/降順ソートの機能を短時間で追加したいと思います。

設定を行うベースファイルを用意しています。
↓こちらをダウンロードしていただき、設定方法をお試しください。
ポータル内のソート方法
まず、おさらいです。 ポータル内のソートの設定方法には以下の2つがあります。 A. レイアウトモードでポータル内でのソート設定 B. リレーションシップグラフでのソート設定 ※ポータルにソート順を設定しないとレコードの作成順で表示されます 今回は「A. ポータル内のソート設定」を使って作成を進めます。
ポータル内のソート設定
1. ベースファイルを開いてレイアウトモードに切り替えポータル(赤枠)をダブルクリックします。 2. 「ポータル設定」を開き「ポータルレコードのソート(S)」で「指定…」ボタンをクリックしてソート順の設定を行います。


ベースファイルでは、既に氏名よみの昇順でソートを行うよう設定を行っています。 この部分のソート条件を変更する事でポータル内のソートを切り替えることができます。 確認ができましたら、こちらの設定は一旦閉じてください。
ポータル内の複数条件でのソート機能
ここからが、ポータル内の複数条件でのソート機能の実現になります。 大まかな設定の流れは、最初のポータルをソート条件が必要な数だけ複製し、複製したポータルに別のソート条件を割り振っていくというものです。 そして、ソート条件によってポータルの表示を切り替えることで、ボタンによってソートが切り替わっているよう見える動作を実現させます。
設定方法
1. レイアウトモードでポータルを選択し、メニューバー>編集>複製(D)でポータルを複製します。

2. 複製したポータルをダブルクリックして「ポータル設定」を開き、ポータルレコードのソート(S)の「指定(P)」ボタンでソート条件を変更します。 元の条件が「氏名よみ(昇順)」でしたので、このポータルには「氏名よみ(降順)」を設定しポータル設定を閉じます。

3. 同様に設定したポータルを更に複製し、「生年月日(昇順)」のソート条件に変更しポータル設定を閉じます。

4. 同様に設定したポータルを更に複製し、「生年月日(降順)」のソート条件に変更しポータル設定を閉じます。

これでポータル4つにそれぞれ別条件のソート設定が終了しました。 このポータル4つの表示をグローバル変数の値「$$ソート」の内容、「空白(null)」「"氏名よみ昇順"」「"氏名よみ降順"」「"生年月日昇順"」「"生年月日降順"」で切り替えます。
5. 最初のポータルを選択した状態で「データ」タブを選択し、「次の場合にオブジェクトを隠す」に「not isEmpty ( $$ソート )」を入力します。 ※「$$ソート」に値が無ければ、このポータル「氏名よみ(昇順)」が表示されます

6. 複製した「氏名よみ(降順)」のポータルを選択し、「データ」タブの「次の場合にオブジェクトを隠す」に「$$ソート ≠ "氏名よみ降順"」を入力します。

7. 複製した「生年月日(昇順)」のポータルを選択し、「データ」タブの「次の場合にオブジェクトを隠す」に「$$ソート ≠ "生年月日昇順"」を入力します。

8. 複製した生年月日(降順)」のポータルを選択し、「データ」タブの「次の場合にオブジェクトを隠す」に「$$ソート ≠ "生年月日降順"」を入力します。

9. 各ポータルの設定はこれで終了です。 4つのポータルを選択して「位置」タブを選択し全てのポータルを「整列」で「左辺揃え」「上辺揃え」「最背面へ移動」して同じ座表に配置します。

10. 次にソート用のボタンを作成します。
今回は文字の「▲」と「▼」をボタンにし、以下のスクリプトを割り当てます。 スクリプト名:ポータルソート切り替え
ウインドウの固定
変数を設定 [ $$ソート ; 値 : Get ( スクリプト引数 ) ]
ウインドウ内容の再表示 []

11. 氏名欄右側の「▲(文字色グレー)」を選択して「ポータルソート切り替え」スクリプトを割当、オプションのスクリプト引数は「""」(空白)とします。 12. 氏名欄右側の「▼(文字色グレー)」を選択して「ポータルソート切り替え」スクリプトを割当、オプションのスクリプト引数は「“氏名よみ降順”」とします。 12. 氏名欄右側の「▼(文字色グレー)」を選択して「ポータルソート切り替え」スクリプトを割当、オプションのスクリプト引数は「"氏名よみ降順"」とします。 13. 生年月日欄右側の「▲(文字色グレー)」を選択して「ポータルソート切り替え」スクリプトを割当、オプションのスクリプト引数は「"生年月日昇順"」(とします。 14. 生年月日欄右側の「▼(文字色グレー)」を選択して「ポータルソート切り替え」スクリプトを割当、オプションのスクリプト引数は「"生年月日降順”」とします。 これで、ソートを行うボタンの設定が出来ました。 ブラウズモードに切り替えてボタンを実際に押して設定したポータルのソートが動作するか確認してみます。 成功していれば、▲▼ボタンを押すとポータル内がソートされるように見えている筈です。 15. 仕上げに、ポータルがどの条件でソートされているのか分かるように▲▼ボタンに条件付き書式を設定します。 16. 氏名欄右側の「▲(文字色グレー)」をクリックして、少し時間を置いて再度クリックしさらに右クリックすると「条件付き書式」の設定画面が表示されます。

17. 設定ダイアログが表示されるので、 条件の計算式を追加し「isEmpty ( $$ソート )」と入力、文字色を「白」にし「OK」を押して設定を完了します。 デフォルトの氏名よみ昇順の場「$$ソート」が空白ですので、「▲」が白文字になります。

18. 同様に氏名欄右側の「▼」条件付き書式を設定します。 計算式は「 $$ソート = "氏名よみ降順" 」文字色を「白」にして「OK」です。

19. 同様に生年月日欄右側の「▲」条件付き書式を設定します。 計算式は「 $$ソート = "生年月日昇順" 」文字色を「白」と設定します。 20. 同様に生年月日欄右側の「▼」条件付き書式を設定します。 計算式は「 $$ソート = "生年月日降順" 」文字色を「白」と設定します。 これで、全ての設定が終了です。ブラウズモードで動作を確認してみてください。 ソート条件の▲▼がソートと同期してグレーから白に変化し、どの条件でソートされているのか明確になりました。 ↓完成品をダウンロード
さいごに
同画面を複数作ったり、タブコントロールを使う事でも同じ機能は実現出来ますが、ポータルのソートを使った設定方法が、最もユーザーにとって違和感のない操作性になると思います。 同じ機能でも様々な実装方法があり、多くの方法を試した経験があることでそのシステムにとって最適な設定を選ぶことができます。今回ご紹介した方法に興味を持って頂けましたら、ぜひ一度お試しください!