第111回 ポータルの行数を取得する
こんにちは。エヌ・ケイ・カスタマイズの永尾です。
お盆を前に暑い日が続いていますが、皆さんいかがお過ごしでしょうか?今年はコロナの影響で3年ぶりに開催が予定されているイベントがたくさんあるので、去年までは外出を控えていたけど、今年はどこかへ行こうと計画されている方も多いのではないかと思います。感染対策しつつ、夏を楽しみたいですね。
今回は、ポータルレコードにフィルタが設定されていてポータルに表示される関連レコードが絞り込まれている場合、表示されているレコードの数は Count 関数による件数と一致しません。フィルタリングされているレコードの件数を計算する方法についてお伝えします。
以下の記事は、Claris FileMaker 関数・スクリプトガイド(バージョン 19 対応)より、
Claris FileMaker 公式トレーニング教材
「24.ポータルの行数を取得する(832ページ)」を元に掲載しています。
この文献から、ポータルを一行表示にすることによる活用方法を学習することができました。文献の執筆者、関係者の方々に深謝いたします。
なお、このブログ記事の趣旨は、弊社所属スタッフの Claris FileMaker 学習の成果を公開することを目的とし、同時に、参考文献の内容の紹介に資するものであることを Claris International Inc. が確認しています。
考え方
ポータルに設定されているテーブルで、[カウント]に設定されている集計タイプのフィールドを作成します。そのフィールドをポータルに配置させるとフィルタの状態に関係なくポータルの行数を表示します。同じフィルタ条件の1行だけのポータルを配置します。
ここでのポイントは「1行だけのポータルを配置」するということ。ポータルは複数行で使うだけではないんですね。
実装
(1)下図のようなレイアウトを作成します。データベースには「親」、「子」テーブルがあります。レイアウト上の2つのポータルには、「子」テーブルの関連レコードが表示されています。
左のポータルは”レッド”でフィルタされています。右のポータルにフィルタは設定されていません。Count関数で計算した関連レコードの数は6ですが、左のポータルはフィルタされているので3行しか表示されていません。
(2)表示されているレコードの数を表示するために、「子」テーブルに「親ID」フィールドをカウントする集計タイプのフィールド「集計」を作成します。
(3)左のポータルと同じ条件でフィルタされる1行しかないポータルを作成し、「集計」フィールドを配置します。
※私が実装する時は「左のポータルと同じ条件」のポータルを作成するより、左のポータルをコピーして1行しかないポータルを作成した方が作りやすかったです。
実行例
(A)ポータルレコードのフィルタで絞り込まれている左のポータルは3行です。その値が「1行ポータルと集計フィールド」ラベルの右に表示されています。
まとめ
いかがだったでしょうか?
ポータルで表示していますが、あたかもテキストフィールドのように見せているので、「1行ポータルと集計フィールド」の部分のポータルの枠線を消し忘れると一つだけ趣きが違うフィールドになってしまうので、見た目も気にしつつ実装してみてくださいね。
参考文献: Claris FileMaker 公式トレーニング教材 から、「Claris FileMaker 関数・スクリプトガイド」等を参考にしています
https://content.claris.com/fmb19_reg-ja