複数フィールドの値を組み合わせた複合キーで重複禁止を実現します。レコードが既にあるかを調べてチェックするので、標準機能を利用する場合のようなチェック用フィールドは追加しません。
動作例は次のようになります(既に2024/9/10 部門Aのレコードがある場合)。
今回のカスタマイズで出来ること
複数のフィールド値を組み合わせた複合キーで重複禁止を実現します
今回は保存時にチェックしますが、「値が変わった時」「ボタンを押した時」などチェックのタイミングは自由に変更できます
アプリの準備
サンプルアプリとして以下のフィールドを作成しました。
※フィールド名とフィールドコードは同じものを指定します
詳細画面での表示は次のようになります。
Customineの設定
全体の流れはこのようになります。
複合キーの重複チェック処理(前半)
やること「条件を組み立ててレコードを取得する」、条件「レコードを保存する直前(削除時は除く)」を使います。
この時の検索条件は、次の3つの条件が全て合致しているものになります。
・現在、表示しているレコードではない
・日付が同一
・ラジオボタンが同一
これを「条件を組み立ててレコードを取得する」の検索条件で指定すると、次のようになります(上から順に前述の条件に対応しています)。
なお検索条件を上記のように指定すると、次のようなアクションの表示になります。
複合キーの重複チェック処理(後半)
取得したレコード数が1以上なら、重複したレコードが既に登録済みなので、やること「エラーダイアログを表示して保存をキャンセルする」で重複チェックエラーとしてダイアログ表示し、保存をキャンセルします。
まとめ
1つのフィールドだけなら標準機能で重複禁止の設定が可能ですが、複数フィールドの組み合わせで重複禁止の設定は標準機能では出来ません。文字列に自動計算を設定した場合は重複禁止の設定が出来なくなるため、重複キー生成のためにJavaScriptのカスタマイズが必要になります。
今回のテンプレートでは、重複チェックエラー後の処理として、エラーダイアログを出すだけでなく、値のセットや重複しているレコードのダイアログ表示など、色々な組み合わせが可能です。ぜひお試しください。