繰り返しフィールドを使ったCount関数の挙動
皆さまこんにちは! よしです。
2022年に入社した新人でございます。
FileMakerは入社して初めて触り、日々勉強中です。
よろしくお願いします。
今回は、繰り返しフィールドを使ったCount関数の挙動は、想像以上に理解に苦しみましたので、深く掘り下げて調べてみました。
結論を言いますと
Count関数を繰り返しフィールドと非・繰り返しフィールドが混在する状態で使うと、思い通りの結果を得ることはできないケースがあります。
正常に動作させるためには、、、
計算タイプのフィールドを使う必要があることが分かりました。
今後の開発の参考にしていただければ幸いです。
では早速やっていきましょう!
目次
繰り返しフィールドとCount関数のおさらい
Count関数
まず初めに、Count関数について説明したいと思います。
Count関数は、フィールド内の空白を除く有効な値の数を返します。
構文はCount ( フィールド {; フィールド…} )です。
引用:https://help.claris.com/ja/pro-help/content/count.html?Highlight=count
繰り返しフィールド
繰り返しフィールドとは、
通常のフィールドを繰り返しフィールドに設定すると、1つのフィールドに複数のデータを保存することができます。
最大繰り返し数の設定(後述)を「5」すると、画面上では次の画像のようになります。
このように、一つのフィールドに複数の値を入力することができます。
繰り返しフィールドの設定のやり方
①レイアウトモードにします。(Ctrl+L)
②ファイル→管理→データベースの手順でデータベース管理を開きます。(Ctrl+shift+D)
③繰り返しフィールドにしたいフィールドを選択し、ダブルクリックします。
④データの格納タブを選択します
⑤繰り返しの項目で、最大繰り返し数を2以上にします。
②レイアウトモードで、設定したフィールドをクリックし、インスペクションのデータタブを押します。
下記のオプション「繰り返しを表示」があります。ここでは、レイアウトで表示する繰り返しの開始番号と終了番号)を設定することができます。
ちなみに、ここで、 「2 上限値 5 「(5 定義済み)」とすると
繰り返し番号2〜5のデータが表示されます。(右下の図)
以上で、おさらい終了です。
いよいよ本題です。
繰り返しフィールドを使ったCount関数の挙動
フィールド定義は、以下のとおりです。
結果用フィールドには、
・すべての参照フィールドが空の場合は評価しない
・フィールドに既存の値が存在する場合は置き換えない
の二つの項目のチェックが外してあります。
フィールド定義した状態
ブラウズモードにし、
フィールド1からフィールド3まで、順番に数値を入力してみます。
フィールド1〜3の[1]の列には値「1」が3つあります。
4つの結果用のフィールドどれでも、「3」と表示されます。(赤枠線内)
その他の列も、結果用フィールドに適切な値が入ってるように見えます。
ところが、次の操作をおこなうとちょっと結果がおかしいのです。
下の画像をご覧ください。
ケース1:フィールド1の値を全て消して、入れ直してみたら変化がありました。
列[2]が計算タイプと自動入力オプションのフィールドのカウント結果が不一致
ケース2:フィールド2の値を全て消して、入れ直してみたら変化がありました。
列[2],[3],[4]が計算タイプと自動入力オプションのフィールドのカウント結果が不一致
ケース3:フィールド3の値を全て消して、入れ直してみましたが変化はありませんでした。
すべての結果が合致
まとめますと、、、
変化があった(結果が期待通りでない)箇所に共通しているのが、計算タイプではないテキストタイプや数字タイプのフィールドということです。
フィールド1の値を入れ直した時 → 変化あり(不一致)
フィールド2の値を入れ直した時 → 変化あり(不一致)
フィールド3の値を入れ直した時 → 変化なし(合致)
このことから、計算タイプと数字・テキストのタイプでは動きが違うことが分かりました。
結論
非・繰り返しフィールドが混ざったCount関数を、正常に動作させるためには、、、
計算タイプのフィールドを使う必要があります。
おまけ
Count関数以外でも同様のことが起きたりしないのか。
読んでいて、そう思った人もいると思います。
私が、実際に試し同様の動きだったものは、集計関数のSum関数とList関数です。
テキスト、数字型の非・繰り返しフィールドが混ざったCount関数を使用する際は十分注意しましょう。