ユーザ定義チェック
最終更新日: 2020年10月27日
R8 | R9
図1は「会社名」項目に空白が含まれていた場合にエラーとする例です。エラーメッセージも任意に用意したものです。
ユーザ定義チェックはリアルタイムでは行われません。保存ボタン押下後にサーバ側でチェックされます。
モデル項目の詳細定義ダイアログで「入力チェック」タブをクリックして開きます。
項目名はプレースホルダ ${...} で括ります。式中には関数も使用できます。
式は「正常系(許可される)」内容を記述します。式の値が真(true)なら、エラーメッセージは表示されません。
警告を表示しますが、ここで保存ボタンを押下すると登録自体は妨げないという設定を行う場合は、入力欄右側のリストボックスから「(警告)」と付与されている選択肢を指定します。
項目 item1 の未入力をエラーとしたい。(Wagbyの必須指定は使わない) 項目 item1 が数字型で、0 以上であることを判定したい。 項目 item1 に "0" から "9" までの数字が含まれていること。そうでなければエラーとなる。 項目 item3 に半角スペースが含まれていないこと。もし含まれていればエラーとなる。 チェックボックス項目 item4 は 3 つまで選択できる。4 つ以上選択された場合、エラーとなる。 日付時刻型項目 sdate の値が、本日より30日以前の場合、入力が行えないとする。
sdate は日付時刻型のため、関数 TODATE を介して日付型に変換している。
今日が5月18日のとき、今日及び未来の日付、そして一ヶ月より前(4月17日より前)は入力できるが、4月18日から5月17日まではエラーになる。
IF 関数を組み合わせることで、複数の項目の条件を一つの式で記述することができます。
次の例は item1 (文字列型) が "株式" の場合、item2 (数値型) は 100 を上限とする、という式です。
例として、項目 a, 項目 b, そして項目 sum を用意します。
この場合、sum 項目側に入力チェックを記述することはできません。実装イメージ
注意
定義方法
「ユーザ定義」欄に式とエラーメッセージを入力します。
式の値が「真(true)」となれば正常とします。「偽(false)」のときエラーメッセージを表示します。
ワンポイント
警告の設定
よく使う条件式
NOT(ISEMPTY(${item1}))
${item1} >= 0
ISINCLUDE(${item1},"0123456789")
NOT(ISINCLUDE(${item3}, " "))
CHECKED(${item4})<=3
OR(
DATE(TODATE(${sdate})) >= DATE(TODAY()),
DATE(TODATE(${sdate})) + 30 < DATE(TODAY())
)
複数の項目による条件式
true
とfalse
を返すような記述になります。
IF(
EXACT(${item1},"株式"),
IF(
${item2} < 100, true, false
),
true
)
入力チェックスクリプトの利用
国際化対応
仕様・制約
読み込み専用項目をチェックする方法
ここで sum = a + b の関係があり、かつ sum の値は 100 でなければならない、という入力チェックを想定します。
Wagby では読み込み専用項目(ユーザが直接編集できない項目; 自動計算項目もこれに含まれる)に対しては入力チェックを行わないようになっているためです。
そこで、項目 a の側に式を記述します。
${sum}==100