はじめに
タイトルだけを見てもイメージしにくいと思います。簡単にいうと以下のように「日付1の値が重複している場合」に日付1の背景色を変更します。
表示されているレコード内で値が重複しているかを判定するので、絞り込み条件で表示するレコードが変わった場合は以下のように変化します。
並び順を変えても問題なしです。
今回のカスタマイズで出来ること
一覧画面で表示しているレコード内でフィールド値が重複していたらフィールド背景色を変更します
絞り込み条件を変更して表示レコードが変わるとその時点の条件で背景色が変更になります
アプリには以下のフィールドを作成しました
Customineの設定
設定はこのようになります。
解説
「一覧画面を表示した時」に「一覧で画面に表示されているレコードを取得する」で対象となるレコードを取得します。
次の「フィールド背景色を変更する」のアクションを「他のアクションの実行が完了した時」で繋ぎます。この時の「追加条件」に「フィールド値が特定の値ならば」を設定する時の「比較値」がポイントです。
「比較値」には「findif 関数」を使って値を指定します。設定している式は次のような内容です。
= findif( $262.日付_1, "=", 日付_1, $262.日付_1)
最初の一覧の場合だと、この値は以下のようになります
「findif 関数」では、配列の中から指定条件に一致するものを探します。ドキュメントの使用例を元にすると、最初のレコードの場合は以下のようになります。
= findif(
["2021-11-30", "2021-11-30", "2021-11-29", "2021-11-02", "2021-11-02"],
"=",
"2021-11-30",
["2021-11-30", "2021-11-30", "2021-11-29", "2021-11-02", "2021-11-02"]
)
(結果)⇒ ["2021-11-30", "2021-11-30"]
同じ日付のレコードがあった場合は結果に同じ数だけ日付が追加されます。ですので、同じレコードがない時だけ日付と一致するということになります。
まとめ
「findif 関数」は使い所が難しいのですが、用途に合うと非常に強力です。
その他にも色々な「関数」がありますので、リンク先もご確認ください。