あてが外れた。
散々持ち上げといてなんですが、使えそうな情報は載ってませんでした(汗
関連がありそうなのは、妥当性チェックではエラーと警告が必要で、警告では確認を求める(特権者の承認が必要、警告にランクを与えて対応を分類など)処理が必要。確認後、処理を継続するか、中断するかの選択をユーザーができるようにする。
データの入力では入力直後に妥当性チェックが必要。Validationを使え。
ってとこぐらい(^^;
あとは自力で考えるしかないようです。
想定する環境は
業務システムでバックにデータベース。
構成はn階層。(.NET のアプリケーション アーキテクチャ[URL]の図1.0準拠)
なので、妥当性チェックのロジックはビジネスコンポーネントに配置。ユーザーインターフェイスコンポーネントで妥当性チェックを実行する。
各層の間のデータ交換は型付きDataSetを使用。
ユーザーインターフェイスはSystem.Windows.Forms.Formに限定。
コントロールとデータの紐付けはDataBindingsを使用する。
そして、チェックすべき内容は
- 文字数
- 文字種(数字、ローマ字、漢字、郵便番号やメールの形式チェック)
- データの整合性(連番のIDや、マスタの存在チェック)
- データの補正(補正なし、あり[Wide全角化|Narrow半角化|Upper|Lower|前後空白除去])
ぐらい。
実装方針としては、C#では文字数や文字種のチェックは正規表現を使えばよい。
データの整合性チェックまでいくと大変かな。
- 事前にマスタが取得できるなら読み込んでおいてチェック。
- それが無理ならそのときにデータベースなどに問合せる。
話しがややこしくなるので、まずは事前にマスタからデータが取得できると仮定。
そうすると、Validationに必要な情報としては「項目名(漢字)」「項目名(DB名)」「チェック用の正規表現」「補正条件」ぐらいでOK
んー、
これならDataColumnクラスに「DataColumnRegexPattern」プロパティとかつけて、妥当性チェックをフレームワーク側で自動化してくれても良さそうだよな(^^;
いかんいかん。「ねだるな!勝ち取れ!」の精神を忘れずに、自分でなんとかする方法を考えることにしよう。
以後、「項目名(漢字)」「項目名(DB名)」「チェック用の正規表現」=「DataColumnRegexPattern」と表記。
仮に、ビジネスコンポーネントから「DataColumnRegexPattern」の一覧が取得できるとしよう。
この場合、Form上のコントロールのValidatingイベントでチェック開始。
「DataColumnRegexPattern」の一覧から、該当する列を判断して、正規表現のチェックを実行。
失敗したらCancelEventArgs.Cancel = true;で終了。
こう考えると結構単純。
じゃないね。まだ「該当する列を判断」する手順が不明だ