第120回 複数テーブルの検索結果を一つのレイアウトに表示する
こんにちは。エヌ・ケイ・カスタマイズの濵田です。
鹿児島も寒くなってきました、先週まで夏用の布団で寝ていたのですが、さすがに寒く今週から冬用の布団になりました。
皆様も体調にお気を付けください。
今回は、複数のテーブルにて同じ条件で検索した結果を、それぞれのレイアウトではなく、一つのレイアウトで表示する方法を学習しました。
以下の記事は、Claris FileMaker 関数・スクリプトガイド(バージョン 19 対応)より、
Claris FileMaker 公式トレーニング教材
「33.複数テーブルの検索結果を一つのレイアウトに表示する(859ページ)」を元に掲載しています。
この文献から、複数の情報をリスト型で保持し、欲しい情報だけを取得して表示するという考え方を学習することができました。文献の執筆者、関係者の方々に深謝いたします。
なお、このブログ記事の趣旨は、弊社所属スタッフの Claris FileMaker 学習の成果を公開することを目的とし、同時に、参考文献の内容の紹介に資するものであることを Claris International Inc. が確認しています。
考え方
各テーブルでの検索結果を1レコード1行のテキスト形式で1つのグローバルフィールドに取得し、そのグローバルフィールドのテキストを、表示専用のテーブルにレコードとフィールドに分解して表示します。
本学習では、顧客管理のテーブルから誕生日と、商品管理のテーブルから発売日が同じ年の情報を検索し、結果をバーチャルリストのテーブルで表示します。
用語
◎バーチャルリスト
本学習を進めていく中で、「バーチャルリスト」という用語がでてきましたが、これまで使用する機会がありませんでした。
異なるテーブルのレコードからレコード単位で改行区切りなどの規則性のあるテキストを生成し、生成されたテキストを専用のテーブルでレコード・フィールドに分解して表示する
とのことですが、イメージがわかないため実際に使用して見ていきます。
実装
(1)検索対象となる各テーブルに、検索結果を格納するグローバルフィールドを作成します。
(2)表示専用の「バーチャルリスト」テーブルを作成
上記のテーブル内のテキスト1 (フィールド)では、「検索する年」で入力した条件の結果から一列目を取得します。
上記を実現するために、以下の計算式を使用します。
バーチャルリスト(レイアウト)のレイアウトモード画面は以下になります。
・管理番号の項目に「テキスト1」で取得した値を表示します。
・名前の項目に「テキスト2」で取得した値を表示します。
「テキスト1」における、計算式の動作を一つ一つ見ていきます。
・GetValue ( バーチャルリスト ; 番号 )
バーチャルリスト(フィールド)で取得した値を一つのレコードずつ取得します。
表示例
・Substitute ( GetValue ( バーチャルリスト ; 番号 ) ; “|” ; ¶ )
バーチャルリスト(フィールド)で取得した値から「|」を「改行」へ置換し、一つのレコードずつ取得します。
表示例
・GetValue ( Substitute ( GetValue ( バーチャルリスト ; 番号 ) ; “|” ; ¶ ) ; 1 )
バーチャルリスト(フィールド)で取得した値から「|」を「改行」へ置換し、一行目を取得します。
表示例
(3)スクリプトの内容
以下のスクリプトで、検索する年(検索条件)の結果から「顧客情報::バーチャルリスト」へ格納します。
検索する年(検索条件)の結果から「商品情報::バーチャルリスト」へ格納します。
「顧客情報::バーチャルリスト」「商品情報::バーチャルリスト」をList 関数を使用し連結します。
この結果を各フィールドに表示させることで、複数テーブルの検索結果を一つのレイアウトに表示する方法を実現しています。
実行例
実際に、「検索する年」に検索条件として「2019」を入力し、結果が表示されることを確認します。
該当するデータがなかった場合は、以下の表示となります。
まとめ
いかがでしたでしょうか。
今回の方法を使用すれば、別々のレイアウトに移動し確認する手間が省ける方法を知ることができました。
特にバーチャルリストについては、今後も応用していきたい機能です。
それでは、来週もお楽しみに!
参考文献: Claris FileMaker 公式トレーニング教材 から、「Claris FileMaker 関数・スクリプトガイド」等を参考にしています
https://content.claris.com/fmb19_reg-ja