今回はレコード保存時に複数のフィールドの値がすべて同じレコードが既に存在する場合、エラーを表示し、保存できなくする方法をご紹介します!
たとえば、日報アプリの場合、同じユーザーのレコードはあり、同じ日付のレコードもありますが、同じユーザー、同じ日付のレコードはあってはいけません。
そんなときに使うのが今回の方法です!
Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。
やりたいこと
複数フィールドで重複チェックしたい場合は、チェック対象の各フィールドの値を繋げて一つの文字列にして別のフィールドに入れておき、そのフィールドを重複禁止にするのが簡単です。
先ほど挙げた日報アプリの例の場合では、ユーザー名と日付を繋げて一つの文字列にして別のフィールドに自動で入れるようにしておきます。
ユーザーも日付も同じレコードが既にある場合は、繋げた文字列も同じになり、kintoneの重複禁止機能に引っかかる、という仕組みです。
アプリのフォーム
以下の3つのフィールドを用意します。
フィールドタイプ | フィールド名 | フィールドコード | 備考 |
ユーザー選択 | ユーザー | ユーザー | 初期値:ログインユーザー |
日付 | 日付 | 日付 | 初期値:レコード登録時の日付 |
文字列(1行) | 重複チェック用 | 重複チェック用 | 重複禁止 |
Customineの設定
文字列結合
やること
「フィールドに値をセットする」を使います。
セット先のフィールドは「重複チェック用」です。
値は「= ユーザー.code & 日付」もしくは「${ユーザー.code}${日付}」を入力します。
※「ユーザー.code」は選択されたユーザー全てのログイン名を選択された順番にカンマ区切りでセットします。なので、複数選択する場合は、選択する順番まで同じでないと同一とみなされません。
条件
「レコードを保存する直前(削除時は除く)」を使います。
以上の設定で複数項目重複チェックができるようになります。
複数選択禁止
上でも書きましたが、ユーザー選択で複数のユーザーが選択出来てしまうと、重複禁止の判定が難しくなります。それ以前に個人の日報なので、ユーザーを複数登録できるのはよくありません。
そこで、ユーザーを複数選択していたら、エラーを表示する処理を加えてあげましょう!
やること
「項目を2件以上選択していたらエラーにする」を使います。ユーザー選択フィールドやチェックボックスフィールドのように複数選択が可能なフィールドで、2つ以上の項目が選択されている場合にフィールドにエラーをセットします。
条件
「レコードを保存する直前(削除時は除く)」を使います。
編集不可
「重複チェック用」のフィールドは編集する必要がありません。編集してもいいですが、保存直前にセットしなおされます。ここは作業する必要が迷わないように編集不可にしてしまいましょう。
やること
「フィールドを無効化する」を使います。
条件
「追加画面・編集画面を表示した時」を使います。
フィールドを非表示にすることもできますが、重複時のフィールドエラー表示も消えてしまい、ユーザーはなぜ保存できなかったのかがわからなくなってしまうので、あまりお勧めしません。
終わりに
今回は二つのフィールドで重複チェックを行いましたが、フィールドが増えても同じように文字列結合すれば、重複チェックができます。
エラーの表示の仕方など細かい部分にこだわりたい方や、さらに複雑な重複チェックをしたい方は、Customineで重複チェックの仕組みから作ることもできます。こちらの記事をご覧ください。
Customineドキュメントやサポートページもぜひご活用ください。