【FileMaker】タブに件数を出したい

FileMakerのリレーションシップグラフで関連を作った先のテーブルの件数を表示したことってありませんか？
単純に件数を表示してもわかればいいんです、と言われればそこでこの記事は終了なのですが、先に進むためにタブコントロールのタブ名に件数を出してわざわざタブを開かなくてもわかるようにしてみます。

:::note info
同じようにタブコントロールのタブ名を計算値で表示するやり方は、Claris社の以下の記事でも公開されています。
ぜひ参考にしてください。
[FileMaker Pro でのタブコントロールの機能強化](https://support.claris.com/s/article/FileMaker-Pro-%E3%81%A7%E3%81%AE%E3%82%BF%E3%83%96%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%AE%E6%A9%9F%E8%83%BD%E5%BC%B7%E5%8C%96-1503693048121?language=ja)
:::

# 対応FileMakerバージョン
今回のサンプルはFileMaker Pro 19.6.1で作成しましたが、タブコントロールのタブ名に計算ができるようになったバージョン13以上でお試しください。

# 結局やりたいことはこういうこと
タブコントロールのタブ名に、リレーションしてあるテーブルの件数を動的に表示します。
![スクリーンショット 2022-12-04 13.13.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/68fbc7da-c174-995f-3c58-87208ca59dd5.png)

さらに、リレーションしてあるテーブルで削除フラグが立つなど、表示したい件数が条件によって違う場合、さらに計算してタブ名に表示します。
![スクリーンショット 2022-12-04 13.13.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/54f4d554-cfd1-afec-ee78-be780cd7e908.png)

# 実装
では、どのように実装しているかをみていきましょう。
## テーブル構成とリレーションシップグラフ
### テーブルとフィールド
今回は、製品マスタと製品問い合わせテーブルを用意しました。
![スクリーンショット 2022-12-04 13.14.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/0527ed40-5a48-03ef-ef0a-926b404edbcb.png)

製品マスタは、サンプルなので、製品名と型番で実装しています。
![スクリーンショット 2022-12-04 13.15.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/a109c45b-33f8-220e-da5b-3d77d9138530.png)

製品問い合わせテーブルは、こちらも最小限の実装です。
![スクリーンショット 2022-12-04 13.15.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/3263936e-0b03-39df-e7c1-169f04ba765f.png)

今回は、この製品問い合わせテーブルの件数をタブに表示したいので、それ用の計算フィールドや集計フィールドを実装しています。
ここが、今回の記事の中心になります。
![スクリーンショット 2022-12-04 13.15.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/7e513a73-5e10-2537-9c27-51c6283ea1a8.png)

| フィールド名 | 説明 |
|:-:|:-:|
| 問い合わせ件数s  | 削除フラグの立っているレコードも含めた問い合わせ件数  | 
|  削除s | 削除フラグの立っているレコードの件数  |
|  件数c | 問い合わせ件数sから削除sを引いた、純粋な問い合わせ件数  |

フィールド名で末尾にsがついているものは、フィールドタイプが「集計」、cがついているものはフィールドタイプが「c」を示しています。
こちらは、フィールド名がどのようなタイプかを示しているだけですので、現場にあったルールを適用してください。

### リレーションシップグラフ
製品マスタと製品問い合わせテーブルを、主キーで結んでいます。
また、製品問い合わせは、レコードが増える際に自動で製品マスタの主キーが設定されるように「このリレーションシップを利用して、このテーブルでのレコードの作成を許可」にチェックを入れています。（件数表示には関係ありませんので、チェック入れなくてもOKです）
![スクリーンショット 2022-12-04 13.14.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/647164e9-e4b5-062d-349d-7e373c5562ea.png)

## レイアウト
コントロールパネルのタブ名の編集をします。
単純なラベルではなく、今回のように計算されたタブ名の場合は、レイアウトモードではタブ名が「計算」となります。
![スクリーンショット 2022-12-04 13.16.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/d67746e1-d7b8-ca7d-0453-14f16307b260.png)

タブ名を作成するとき、件数cフィールドをcase文で実装します。
case文では、「まだ問い合わせがない時は0件と表示、そうでない場合（１件以上ある時）はその件数を表示する」という実装になっています。
![スクリーンショット 2022-12-04 13.16.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/d2d6ce64-d18f-f2a1-398d-6542fbf9843c.png)

:::note info
case文がよくわからない方は、Claris公式のヘルプを参照してみてください。

https://help.claris.com/ja/pro-help/content/case.html
:::

実装は、これだけです。

# 応用
件数表示として、今回は削除フラグの立っていないレコードの件数を表示してますが、次のような応用ができます。
・解決済み件数
・未解決件数

タブ名の計算として、件数表示以外にもたくさん応用ができますので、自身のカスタムAppで実装してみてください。

## 応用：レコード編集の情報にする
そのほか、今回のサンプルのように製品マスタの編集として入力エリアをコントロールパネルにして、何を編集しているかがわかるようにラベルをつけるときにタブ名を計算値にしている、という実装もわかりやすくていいと思います。
![スクリーンショット 2022-12-04 14.07.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/7cbc5356-e715-9f5b-3016-84330dde26ad.png)
この場合は、製品名や型番は変更されると困るので、純粋に製品概要だけを入力することに集中できます。
あらぬところが変更されずに済みますね。

コントロールパネルのタブ名、カスタマイズして色々見える化してみてください。