入力内容に応じてデータの登録制御や項目の入力可/不可を切り替える方法

はじめに

「楽楽販売」では、業務ルールに合わせてデータの入力間違いや不要な登録を防ぐための様々な制御機能が備わっています。
目的に応じて、大きく以下の2つの方法で制御を設定できます。

目的に合わせて下記設定方法からお選びください

  • パターン①:条件を満たさない場合、「レコードの登録自体」をブロックしてエラーにしたい
    👉 パターン①の設定手順へ(文字数制限、重複禁止、数値範囲、日付比較など)
  • パターン②:ある項目の入力内容に応じて、別の項目の「入力可/不可(活性・非活性)」を切り替えたい
    👉 パターン②の設定手順へ(活性・非活性の切り替えなど)

パターン①:条件に合致した場合にレコード登録自体をさせない

入力された値が特定の条件に合致しない場合、エラーメッセージを表示してデータベースへの登録をさせない設定です。
すべてDB設定>基本設定>DB項目設定の各項目の詳細設定画面で行います。

単一項目で制御する

文字数・文字種・フォーマットの制限(半角・全角・電話番号など)

「テキスト(1行)」項目は、最もスタンダードな入力項目です。入力された値は文字列として扱われます。

  • 入力文字の制限
    「テキスト(1行)」項目の詳細設定画面では、「入力制限」のプルダウンから入力可能な文字種を制限できます。
    入力制限の設定画面
  • 文字数の制限(上限・下限)
    同じく「テキスト(1行)」項目の詳細設定画面にて、「最小文字長」および「最大文字長」に任意の数値を入力することで、入力できる文字数を制限できます。

補足

入力値の自動変換(コンバータ機能)
「テキスト(1行)」項目では、「入力値の自動変換を行う」にチェックを入れることで、入力された値を指定のルールで自動変換し、表記揺れを防ぐことができます。

  • 会社表記の統一(「(株)」を「株式会社」にするなど)
  • 半角・全角の統一(英字、数字、カナなど)
  • 7桁の数字を「ハイフンつき郵便番号」に自動変換
  • 「任意文字列の変換の設定を行う」にチェックを入れると、最大10個まで独自の文字置き換えルールを登録できます。

※自動変換は、画面での登録・編集時、自動処理の実行時、およびインポート時に適用されます。

自動変換に関する詳細は下記の記事をご確認ください。
項目設定:項目タイプ「テキスト(1行/複数行)」

重複登録の禁止

すでに登録されているデータと同じ値(重複データ)が入力された場合に、エラーを表示して登録を拒否できます。二重登録を防ぎたい場合に有効です。
※項目タイプが「テキスト(1行)」または「DBリンク項目」の場合に設定できます。

<設定手順>
【設定箇所】DB設定>基本設定>DB項目設定

  1. 管理画面のメニューから、DB設定>基本設定>DB項目設定 の順に遷移します。
  2. 重複データの登録を禁止したい対象項目の右側にある「設定」ボタンをクリックします。
    対象項目の設定ボタン
  3. 項目詳細設定画面の「重複」欄にある「値の重複を禁止する」にチェックを入れます。
    値の重複を禁止するチェックボックス
  4. 画面下部の「確定」ボタンをクリックして保存します。

注意

設定した項目(ヘッダ項目・明細項目)による重複チェックの仕様の違い

  • ヘッダ項目に設定した場合:同一データベース内に重複する値がないかをチェックし、別レコードとの重複登録を防止します。
  • 明細項目に設定した場合:1つのレコードに含まれる明細行の間など、同一レコード内でのみ重複をチェックします。別レコードとの重複は禁止できません。

数値の最小値・最大値の制限

項目タイプが「数値」および「数値計算」の場合、項目詳細設定画面にて「最小値」および「最大値」を入力することで、入力可能な数値の範囲を制限できます。

  • 手入力による直接制限(「数値」項目):指定した範囲外の数値が入力された場合、保存時にエラーとなり登録を防ぎます。
  • 計算結果による制限(「数値計算」項目):他項目の計算結果が最小値・最大値の範囲外となった場合も同様にエラーとなり、レコードの保存を防ぎます。

 

複数項目を比較して制御する

日付の比較(開始日・終了日の逆転防止、過去日の登録ブロックなど)

「開始日より終了日が前の場合は登録させない」「現在日時より過去の日付は登録させない」といった複数項目の比較制御は、「日時と日時の計算」項目と「数値計算」項目の最小値・最大値制限を組み合わせることで実現できます。

<設定手順>
【例】現在日時より前の入力日は登録させない場合

  1. 比較する日時項目を用意する(「日時」項目)
    比較対象となる2つの項目を作成・用意します。(【例】「現在日時」「入力日」)
  2. 2つの項目の差を計算する(「日時と日時の計算」項目)
    計算式に「入力日 - 現在日時」を指定します。比較したい条件(年・月・日など)に合わせて単位を設定します。
    ※「日時と日時の計算」項目には直接最小値・最大値を設定できません。
  3. 「数値計算」項目に変換して最小値制限をかける(「数値計算」項目)
    新しく「数値計算」項目を追加し、計算式に「【2の項目名】 + 直接入力『0』」と指定して数値化します。その上で、最小値に「0」を設定します。

この設定を行うことで、入力日が現在日時より前の(差がマイナスになる)場合、保存時に以下のエラーが表示されてレコードの登録がブロックされます。

表示されるエラーメッセージ
'(3の項目名)'の計算結果が'0'以上の数字になるように入力してください。
※システム標準の自動メッセージのため、エラー文言の変更はできません。

詳細は下記記事をご覧ください。
開始日と終了日の逆転や過去日の入力による登録をブロックする方法

数値の比較(発注金額が予算額を超過している場合は登録させない など)

「発注金額が予算額を超えている」「請求合計額が受注金額を超えている」といった数値項目の比較制御は、「数値計算」項目の最小値・最大値制限を活用して設定します。

<設定手順>
【例】発注金額が予算額を超過している場合は登録させない場合

  1. 比較する数値項目を用意する(「数値」項目)
    比較対象となる項目を作成します。(【例】「予算額」「発注金額」)
  2. 計算結果を反映する項目を作成する(「数値計算」項目)
    計算式に「予算額 - 発注金額」を設定します。
    ※3項目以上の複雑な計算を行いたい場合は、計算方法を「四則計算(式入力)」に切り替えることで対応できます。
  3. 「数値計算」項目の詳細設定で最小値を指定する
    詳細設定画面にて、最小値に「0」を設定します。

発注金額が予算額を超過すると、差額(計算結果)がマイナスになるため、保存時にエラーが表示されてレコードの登録がブロックされます。

表示されるエラーメッセージ:
'(数値計算の項目名)'の計算結果が'0'以上の数字になるように入力してください。
※システム標準の自動メッセージのため、エラー文言の変更はできません。

その他の複雑な条件(自動処理を利用する場合の注意点)

計算項目だけでは表現できない複雑な条件でチェックを行いたい場合、自動処理機能を用いてエラーチェックや通知を行う運用も検討されます。

ただし、自動処理はレコードが登録・保存された後に実行される仕組みです。
そのため、条件に合致しないデータの「登録をさせない(保存をブロックする)」という用途には利用できません。

【自動処理で行う場合の運用イメージ】
一旦レコード登録を許可した上で、自動処理によって「エラーフラグを立てる」「管理者へ警告メールを送信する」「ステータスを要確認に変更する」といった運用でカバーします。

パターン②:同一レコード内のある項目の入力内容に応じて別の項目の入力可/不可(活性・非活性)を切り替える

「項目Aで『あり』を選択した時だけ、項目B(詳細理由など)を入力できるようにしたい」という場合は、「入力制限」機能を使用します。

1:1での設定(入力制限機能の基本)

特定条件を満たした時だけ項目を入力できるようにする設定です。
制限がかかった項目は入力画面でグレーアウト(非活性)表示され、条件を満たすと色が変わりアクティブ(活性)になります。

<設定手順>
【設定箇所】DB設定>表示設定>レコード入力画面設定

  1. 設定対象の項目の「設定」ボタンをクリックします。
  2. 「入力制限」の欄にある「入力制限を行う」にチェックを入れます。
  3. 表示された条件設定欄で、「どの項目の値がどういう状態の時に活性化させるか」の条件を指定し、確定します。

詳細な設定方法や設定できる項目タイプなどの詳細は下記の記事をご覧ください。
レコード入力画面設定

複数条件(N:1)で入力可/不可を切り替えたい場合の対応策

「項目Aが〇〇 かつ 項目Bが×× の時だけ、項目Cを入力可能にしたい」といった複数条件(N:1)の場合、入力制限機能の条件に直接複数項目を指定することはできません。
このような場合は、要件に合わせて以下のいずれかの方法で対応します。

【方法A】計算項目を活用して画面上で動的に制御する(推奨)
数値計算や判定用の計算項目を作成できる場合は、計算結果(【例】「条件合致なら 1、不一致なら 0」など)を1つの項目にまとめ、その計算項目を入力制限の条件として指定することで、画面上でのリアルタイムな活性・非活性の切り替えができます。

【方法B】自動処理を活用して保存後にエラーチェック・値クリアを行う
入力画面上でのリアルタイムな制御ではなく、レコード確定(保存)後に自動処理を動かす方法です。

  • 条件を満たさないのに項目Cが入力されている場合、自動処理でエラーフラグを立てる
  • 条件を満たさない場合、保存時に自動処理で項目Cの入力値を自動的にクリア(空欄に)する

※自動処理は保存後に動く仕組みのため、入力画面を開いている最中にリアルタイムでグレーアウト切り替えを行うことはできません。

(記事ID:2406 )