MS Access Tips/Sample and VBA and Blog customize etc...

「レコード保存ボタン」クラスで入力チェック

前々回の レコード保存ボタンのクラス化 で保存ボタンをクリックしたときのみ保存する仕様のクラス化をしました。で、そのフォームで正しくデータが入力されているかチェックをするにはどうしたらいいでしょうか。

通常はフォーム全体の入力チェックは更新前処理で行うのが定石です。クラスモジュールでフォームの更新前処理イベントを設定してますが、フォームモジュールの方にも更新前処理イベントを記述することができます。このように両方に記述した場合、フォームモジュールのイベントプロシージャが実行された後、クラスモジュールのイベントプロシージャが実行されるようです。

ということは、フォームの更新前処理で入力チェックを記述すると、レコード保存に連鎖するアクションを起こすと先に入力チェックが実行されることになります。これは、保存ボタンをクリックしたとき以外で、レコード保存に連鎖するアクションを無視するという仕様に反することになります。

とういことで、このクラスで入力チェックする方法を考えてみました。

難易度:

結局、保存ボタンクリック以外で発生する更新前処理は無視するという仕様なので、更新前処理でチェックするという方法は使えません。逆に保存ボタンクリック時だけ保存できるという仕様なので、保存ボタンクリック時で入力チェックするしかないということになります。

フォームモジュールのイベントプロシージャが実行されてから、クラスモジュールのイベントプロシージャが実行されるので、フォームモジュールのイベントプロシージャで入力チェックしたときに入力規則違反があったらクラスモジュールのイベントプロシージャでレコード保存のアクションが実行されないようにすればいいことになります。

入力規則違反があったということを保存しておくパブリック変数をクラスモジュールに置き、それを参照してレコード保存アクションを実行するかしないか判断するようにしました。

フォームモジュールの方のコードは下記のようになります。

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/165-ab39fd1f
該当の記事は見つかりませんでした。