これを行うには、列の必須の検証式を使用する必要があるか、別の方法で行うためのライセンスを持っているかによって、さまざまな方法があります。
設計上の考慮事項
これは、画面に対して 1 回だけルールを検証する必要があるフリースタイルのデータウィンドウになりますか?それとも、ユーザーが一連のデータを大量に入力でき、各行にルールを適用する必要がある表形式のスタイルになりますか?
必須フィールドがフォーカスされるたびにユーザーに正しい値を入力するように要求したいですか、それともユーザーが画面を自由にナビゲートして保存時に検証できるようにしたいですか?
ここでいくつかの異なる応答が得られると思いますが、単純なチェックにのみ列指定式を使用することを好みます。理由は次のとおりです。
- そこにある複雑なロジックは、読み取りと保守が難しくなる傾向があります
- チェックしているエラー条件が複数ある場合、列仕様の組み込みエラー メッセージ フィールドを使用すると、扱いにくいメッセージが表示される可能性があります。
ただし、一般的に dw 式が非常に高速であることは認めます。
入力規則に計算フィールドを使用する
代替手法の 1 つも実行速度が速く、ほとんどのバージョンの PB で使用できます。
- データウィンドウに、次のような意味のある名前を持つ計算フィールドを作成し
cf_amount_rule
、式に次のように記述します。if (debit + credit = amount, 0, 1)
- 必要に応じて、そのフィールドをユーザーに非表示にします
- フッターに別の計算フィールドを追加して合計する
cf_amount_rule
と、エラーが発生したときにすぐに通知される便利な参照ポイントが得られます
- 保存時 (または PFC ユーザーの場合は pfc_validation イベント) に、合計が 0 より大きいことを確認し、エラー メッセージを投稿できます。
オブジェクト指向の純粋主義者は、ロジックをデータウィンドウに入れるのは間違っていると言うかもしれません。複数のデータウィンドウに同じルールを入れていることに気付いたら、それは確かにコードの匂いです。しかし、変更される可能性が低い単純なルールについては、データウィンドウがこれらのルールを実行するのに非常に効率的であり、他の場所で多くのコードを記述する必要がないことを何度も発見しました.
オプショングッズ
- find() 機能を使用してエラーのある特定の行を識別することにより、エラー メッセージをより堅牢にすることができます。
- を参照するプロパティ式を介して行またはフィールドの背景色を変更することにより、ユーザーに視覚的なヒントを提供します
cf_amount_rule
。