第114回 複雑な条件のポータルフィルタを設定する

おはようございます。こんにちは。こんばんわ。
エヌ・ケイ・カスタマイズの 泉 です。

前回の投稿から約2ヶ月
以前は、1ヶ月で2度ブログ更新の順番が回ってくる月もありましたが、
社員が多くなり、今では2ヶ月に一度のブログ更新

このブログ更新が、気持ちを新たに、基礎や応用を勉強する良い機会になっております!!

それでは、さっそくClaris FileMakerのテクニックについて勉強していきましょう!!


以下の記事は、Claris FileMaker 関数・スクリプトガイド(バージョン 19 対応)より、
「27.複雑な条件のポータルフィルタを設定する(842ページ)」を元に掲載しています。

この文献から、ポータル内で表示させたい情報の表現方法について学習することができました。文献の執筆者、関係者の方々に深謝いたします。

なお、このブログ記事の趣旨は、弊社所属スタッフの Claris FileMaker 学習の成果を公開することを目的とし、同時に、参考文献の内容の紹介に資するものであることを Claris International Inc. が確認しています。

Claris FileMaker 公式トレーニング教材

複雑な条件のポータルフィルタを設定する

Claris FileMakerのポータルって、紐づくテーブルの情報をリスト表示できて便利ですよね!
ただ、自由度を高くしている分、列のラベル、ソート機能、フィルタ機能は自前で用意しないといけません。

今回は、動的にキーワードを指定してポータルの表示レコードを絞り込むフィルタ機能を実装します。

ユーザがポータルフィルタに複数の条件を設定できるようにします。
各条件に合致した関連レコードのみ表示するのはもちろん、条件が空欄の場合はすべての関連レコードが対象になるように設定します。

グローバルフィールドを使用してユーザが条件を入力できるようにします。
各条件を AND 演算子でつなぐことでそれぞれの条件に合致した関連レコードを表示します。
条件が空欄の場合はすべての関連レコードで成立する計算式を設定します。

実装

  1. ユーザが条件を設定するためのグローバルフィールドを作成します。

  2. グローバルフィールドをレイアウトに配置します。
    ・テキスト検索の 「キーワード」、値一覧から選択する 「分類」、数字を入力する 「個数・金額」 の4つをフィルタの条件として設定できるようにします。
    ・「分類」 フィールドは値一覧から入力済の値が選択できるように設定します。
    ・各フィールドは 「Return / Enter」 キーでも内容を確定できるようにインスペクタの [データ] タブの [動作] から[ 次のオブジェクトへの移動に使用するキー] に 「Return」 と 「 Enter」 を追加します。





  3. ポータルにオブジェクト名をつけます。

  4. 条件をすべて満たす場合に表示されるようにします。
    [ ポータルレコードのフィルタ]に計算式を設定します。
    not 演算子と IsEmpty 関数を使用して各グロー バルフィールドは値が入力されているときのみ関連レコードの値と比較が行われ、値が空欄のときにはすべての関連レコードで条件が成立するように[ 1] が返るようにします。
    「商品名」 は PatternCount 関数でキーワードが含まれるときに成立するようにします。
    「分類」は選択した値を同じときに 「個数」 と 「金額」 は入力した値以上のときに成立するようにします。
    AND 演算子で繋ぐことですべての条件を満たす関連レコードのみ表示されます。

  5. ユーザが条件を入力した際にポータルフィルタが再評価されるようにスクリプトトリガを設定します。
    ポータルを更新するスクリプトを作成して、 各グローバルフィールドのスクリプトトリガに設定します。
    直接入力を行う 「キーワード」、「個数」 および 「金額」 は OnObjectSave スクリプトトリガに、ポップアッ プメニューから選択を行う 「分類」 は OnObjectModify スクリプトトリガに設定します。

実行

  • 条件が未入力の時:すべての関連レコードが表示されます。

  • [キーワード]のみ入力した時:[商品名]の一部に[キーワード]が含まれる関連レコードのみ表示されます。

  • すべての条件を入力した時:各条件を満たす関連レコードのみが表示されます。

  • 条件を満たせないように変更した時:関連レコードは表示されません。

さいごに

いかがだったでしょうか?

自由度が高く自前で作るからこそ、お客様の要望に合わせたレイアウトで「フィルタ」機能を実装できます。

今回は、ラベルの上にフィルタ用のフィールドを配置しましたが、ラベルの下でもいいと思います。

また、フィルタは入力欄ではなく、特定のフィルタを指定できる「ボタン」を配置するのもいいと思います。

お客様から「こういう風なフィルタ機能が欲しいんだよね」という要望に、「Claris FileMakerならできますよ」とドヤ顔で、食い気味に回答できるようになる日を夢見て、今回のブログを締めたいと思います。

それでは、次回のブログもお楽しみに!!

参考文献: Claris FileMaker 公式トレーニング教材 から、「Claris FileMaker 関数・スクリプトガイド」 等を参考にしています
https://content.claris.com/fmb19_reg-ja