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

帳票フォームの複数レコードで未入力項目のチェック

タイトル画像

帳票フォームで複数レコードを入力した後、ボタンクリック等で入力必須フィールドに未入力があるかどうかチェックするという要件です。

レコード単位なら下記ですでに紹介しています。

複数項目の入力チェックを共通モジュール化する - hatena chips

これを複数レコードに対応しようということです。未入力があったら、メッセージを表示する、あるいは、そこへフォーカス移動させるようにします。

難易度:

サンプル仕様

「社員データ」テーブルをレコードソースとする帳票フォーム。

社員コード, 氏名, フリガナ, 在籍支社, 部署名, 自宅郵便番号, 自宅都道府県, 自宅住所1 の各テキストボックス(or コンボボックス)が入力必須。

上記のテキストボックスと連結するフィールドの「値要求」プロパティは「いいえ」。

フォームフッターに「未入力チェック」ボタンを配置。クリックすると先頭レコードから未入力をチェックして、未入力が見つかるとメッセージを表示して、そのテキストボックスへフォーカス移動します。

共通関数

標準モジュールに下記の関数を作成(コピー)します。

使用例

コマンドボタンのクリックで全レコードの未入力をチェックする
未入力チェック対象コントロール
社員コード, 氏名, フリガナ, 在籍支社, 部署名, 自宅郵便番号, 自宅都道府県, 自宅住所1

フォームを閉じるときにチェックする場合は、フォームの「読み込み解除時」のイベントプロシージャに下記のように記述します。

サブフォームの場合は、サブフォームコントロールのフォーカス喪失時にも設定します。

サンプルファイルが下記からダウンロードできます。
FrmRequiredInRecords_07.zip (Access 2007-2010 形式 - 32kb)
FrmRequiredInRecords.zip (Access 2002-2003 形式 - 29kb)
FrmRequiredInRecords_2k.zip (Access 2000 形式 - 29kb)

拍手する

4 Comments

delave says...""

数字が0のものをチェックするように変更したいのですが
どのようにすればよいでしょうか。

2017.04.06 14:16 | URL | #- [edit]
hatena says..."re:"

CheckRequiredInRecords = Not IsNull(rs(Ctl.ControlSource))

の部分を、下記に変更してください。

CheckRequiredInRecords = rs(Ctl.ControlSource)<>0

Nullと0の両方をチェックしたい場合は、

CheckRequiredInRecords = Nz(rs(Ctl.ControlSource))<>0

2017.04.06 15:56 | URL | #5uE6dEgY [edit]
delave says...""

ありがとうございます。
未入力と0の場合で判別することができました。
別件で、サブフォームを置いて上記のようにサブフォームの場合の記述を行うと、サブフォームからフォーカスが喪失したときに「〇〇は必須入力です」というメッセージは出るのですが、その箇所にフォーカスが飛ばないのですが仕様でしょうか?

2017.04.07 16:01 | URL | #- [edit]
hatena says..."re:"

> 別件で、サブフォームを置いて上記のようにサブフォームの場合の記述を行うと、サブフォームからフォーカスが喪失したときに「〇〇は必須入力です」というメッセージは出るのですが、その箇所にフォーカスが飛ばないのですが仕様でしょうか?

当方で作成したサンプルでは飛びます。もう一度、このページが解説している通りに正しく設定されているか確認してみてください。

どうてもうまくいかないなら、下記の私の主催するBBSで質問して、該当のファイルをアップロードしてください。(アップロードは、検証に必用な最低限のオブジェクトのみにしたものにしてください。)

2017.04.07 18:18 | URL | #5uE6dEgY [edit]

Leave a reply






Trackbacks

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