【ACCESS VBA】正しく入力しない、不埒な野郎を,For eachが成敗する

記事
IT・テクノロジー

YoTubeでも解説しています。ぜひ、ご覧ください



正確なデータベースを作成するには、正確なデータ入力が必要です。
特に携帯電話番号の桁数等、11桁にも関わらず、10桁で入力してくる輩を撲滅します。

正確なデータベースを作成するには?


こんにちは。伊川です。
今回は、標準モジュールを利用して、正しい入力を促進する内容です。
以前の私は、正しい桁数を入力させるために、更新前処理を利用していました。
If Me.携帯電話_1 = "無" Then Exit Sub
    If Len(Me!携帯電話_1) = 11 Then Exit Sub
    MsgBox "携帯は11桁です。"
    Cancel = True
このようなコードです。
しかし、この制限を設けるのに、フィールドが1個ならまだしも、10個も、20個もある場合は、現実的ではありません。
この状況を打破しなければ、正しいデータベースが作成できません。
この状況を標準モジュールに、数行のコードを仕込むことで解決できます。

このブログはこんな人にお勧め

ACCESSの入力フォームに入力制限を設けている人
ACCESSで正しいデータベースが欲しい人
いつも適当に処理する人いて、ブツブツ言いながら、データベースをリカバリしている人


このブログを、読み終わるころには・・・・

今回紹介する方法を利用することで、入力漏れ撲滅、正しい桁数が確保されます。
ほんの少しの細工で、あなたのデータベースは、見違えるように、正確になります。

標準モジュールとFor eachの組合せ 作業手順 その1 データベース確認

1.jpg

現在、このような入力フォームがあるとします。
生年月日は、4桁、つまり、mm/ddで入力したいとします。
例)0126
これは、私の誕生日です。
携帯電話は、11桁です。
これは、もう、普遍の原則です。
ちなみに、固定回線は、10桁です。
携帯電話を入力しろと言っているのに、固定回線を入力してくる輩がいます。
特に、電話番号の手入力は、危険です。
個人情報保護法を、読んだこともない輩が、やたら、情報漏洩と叫ぶこともあります。
そのような意味でも、ある程度、入力には制限を付けたほうが良いですね。

標準モジュールとFor eachの組合せ 作業手順 その2 4桁、または無以外入力させない


これもよく、同僚から言われるのですが、なぜ、規定値を無にするのかと?
そんなもん、データベースは、原則、空白はないんじゃ
これで一喝しています。
どうしてと思う人もいるかもしれませんが、空白があると、データ抽出が面倒なのです。

2.jpg

上の図のように、非連結のテキストボックスの名前を、txt4テキスト0 としています。
つまり、txtの後に4桁なので、4を挟んでいます。
これだけです。
後は、条件を書くだけです。

3.jpg

カンタンに言うと、文字数が、4文字、または、無でなければ、先に進めないと記載しています。
ただこれだけですね。

標準モジュールとFor eachの組合せ 作業手順 その3 11桁以外登録させない

4.jpg

先頭の条件を変更するだけです。
これで完了です。

標準モジュールとFor eachの組合せ 作業手順 その4 For eachをとことん使う


5.jpg

この状態で、テーブルに入力が完了した場合、なにもしなければ、上段の、生年月日、携帯電話の値は、変わりません。

6.jpg

これで、すべてのテキストボックスの値は、無になります。
これは、フォームモジュールに記載しています。
すべてのフォームに適用するわけではないからです。
当然、空白も撲滅します。

7.jpg

8.jpg
赤枠が、入力制限のコードを記載する場所になります。
つまり、標準モジュールから呼び出しています。


ここがポイント


標準モジュール、クラスモジュールを利用すると、条件判定が少なくなりますね。
こんな便利な機能を、なぜ利用しなかったのか?、いや、できなかったのか?
単純に勉強不足なんですが、書籍にも書いていないので、仕方ないですね。
でも、このブログでは、実践的な技を紹介するのが、趣旨です。
是非、あなたも、コードを短くする喜びを覚えてください。


まとめ

今回は、以前紹介したコードの応用というか、使いまわしです。
入力制限を付けるフォームは、項目をまとめておくことで、コードの記載の量が、グーン減りますね。
今回も最後まで読んでいただきありがとうございました。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す