サポート > リポジトリ > 入力チェック > ユーザ定義チェック
ja | en

任意の式を用いて、オリジナルの入力チェックを行うことができます。エラーとなった場合のメッセージも記述することができます。

図1は「会社名」項目に空白が含まれていた場合にエラーとする例です。エラーメッセージも任意に用意したものです。

図1 空白文字のチェック
ユーザ定義チェックはリアルタイムでは行われません。保存ボタン押下後にサーバ側でチェックされます。

モデル項目の詳細定義ダイアログで、ユーザ定義に式とエラーメッセージを記述します。 式の値が「真(true)」となれば正常とします。「偽(false)」のときエラーメッセージを表示します。

項目名はプレースホルダ ${...} で括ります。式中には関数も使用できます。

図2 ユーザ定義式
式は「正常系(許可される)」内容を記述します。式の値が真(true)なら、エラーメッセージは表示されません。

警告を表示しますが、ここで保存ボタンを押下すると登録自体は妨げないという設定を行う場合は、入力欄右側のリストボックスから「(警告)」と付与されている選択肢を指定します。

図3 警告の指定

項目 item1 が文字列/日付/時刻/日付時刻型で、未入力をエラーとしたい。(Wagbyの必須指定は使わない)

NOT(ISBLANK(${item1}))

項目 item1 が数字型で、0 以上であること。未入力ではないことを含む、有効な数字かどうかを判定したい。

${item1} >= 0

項目 item1 に "0" から "9" までの数字が含まれていること。そうでなければエラーとなる。

ISINCLUDE(${item1},"0123456789")

項目 item3 に半角スペースが含まれていないこと。もし含まれていればエラーとなる。

NOT(ISINCLUDE(${item3}, " "))

チェックボックス項目 item4 は 3 つまで選択できる。4 つ以上選択された場合、エラーとなる。

CHECKED(${item4})<=3

日付時刻型項目 sdate の値が、本日より30日以前の場合、入力が行えないとする。

OR(
 DATE(TODATE(${sdate})) >= DATE(TODAY()),
 DATE(TODATE(${sdate})) + 30 < DATE(TODAY())
)

sdate は日付時刻型のため、関数 TODATE を介して日付型に変換している。

今日が5月18日のとき、今日及び未来の日付、そして一ヶ月より前(4月17日より前)は入力できるが、4月18日から5月17日まではエラーになる。

スクリプトを用いた、より複雑な入力チェックを行うこともできます。 詳細は「業務ロジック > 入力チェック・整合性チェック」をお読みください。

  • このチェックは「保存」などのボタンを押下したタイミングで、サーバ側で行われます。
  • エラーとなった入力項目は、背景が赤となります。テキスト入力項目または日付時刻リストボックスが対象です。
  • 入力対象ではない項目に対する入力チェックを行うことはできません。具体的には計算式で求められる項目や、読み込み専用項目、参照連動項目です。
  • 繰り返し項目、繰り返しコンテナ、外部キー関連モデルに対する COUNT, SUM 等の集合処理関数を用いることはできません。
  • 他の入力チェックは画面から入力された文字列に対して行われますが、この式を用いたチェックは唯一「ストアモデル」の項目を対象としています。(正確には、画面から入力された文字列から構成されたプレゼンテーションモデルからストアモデルへと変換したあと、そのストアモデルの値に対して式が適用されます。)ストアモデルとプレゼンテーションモデルの詳細は「業務ロジック > モデルの基本」をお読みください。

読み込み専用項目をチェックする方法

例として、項目 a, 項目 b, そして項目 sum を用意します。
ここで sum = a + b の関係があり、かつ sum の値は 100 でなければならない、という入力チェックを想定します。

この場合、sum 項目側に入力チェックを記述することはできません。
Wagby では読み込み専用項目(ユーザが直接編集できない項目; 自動計算項目もこれに含まれる)に対しては入力チェックを行わないようになっているためです。

ユーザが直接編集できない項目に入力チェックをかけてしまった場合、常に入力エラーとなるようなデータしか作成できない場合が起きないようにしています。

そこで、項目 a の側に式を記述します。

項目 b に記述することもできます。同じ動作になります。

${sum}==100

リポジトリキーはmodel/modelitem/generic_checkです。