ACCESSで1つの入力フォームに、入力項目が多いと気持ちが折れます。
そんな時は、入力フォームを分割すると、スッキリします。
しかし、データの追加方法が、少し異なります。
目次
非連結のテキストボックスからデータを追加するとき
こんにちは。伊川(@naonaoke)です。
今回は、入力フォームを2つ用意します。
1つのフォームに入力項目が多いときは、入力フォームを分割するといいかなと思います。
その時のデータの追加方法に問題があります。
自分で作成していて、改めて、俺はバカだと思った瞬間でした。
このブログはこんな人にお勧め
- ACCESSで入力フォームを作成している人
- VBAで、アクションクエリを実行したい人
- 非連結のテキストボックスで入力フォームを作成したい人
このブログを、読み終わるころには・・・・
また、入力フォームを作成する際の小技も覚えることができます。
データベースの最大の敵は、入力漏れです。
フォームを作成していて、バカと思った瞬間
この入力フォームから、同時登録をした場合にどうなるのかと考えました。異なる他人が同時登録はあり得ません。
しかし、絶対にないとは言えません。
社員ID、123を編集中に、ヤマダの登録がされた場合、検証はしていませんが、恐らく、伊川直助とは無関係の情報が登録されるのではないか?
多分、早い者勝ちで、無関係な情報が反映されます。
この場合は、新しくデータを追加するのではなく、社員IDを抽出条件として、空白のデータを、有効なデータに更新するということになります。
しかし、このフォームには、社員IDがありません。
ココが問題です。
入力フォームを作成するときの小技 作業手順 その1 他のフォームの情報を参照する
1番始めに入力した社員IDを再利用します。
VBAは、上から順番に処理されます。
現在開いているフォームが、F_入力です。
社員IDをF_入力_2に値を渡します。
F_入力_2を開く
社員IDの値を渡す
F_入力を閉じる
入力フォームを作成するときの小技 作業手順 その2 半角カナのみを入力させたい
名前のカナを半角カタカナで入力させたい場合、イチイチ、IMEモードを変換するのは面倒です。
このようなコードを記載します。
StrConv関数を利用します。
StrConv関数の説明
定数 | 値 | 内容 |
---|---|---|
vbUpperCase | 1 | 文字列を大文字に変換します |
vbLowerCase | 2 | 文字列を小文字に変換します |
vbProperCase | 3 | 文字列の各単語の先頭の文字を大文字に変換します |
vbWide | 4 | 文字列内の半角文字を全角文字に変換します |
vbNarrow | 8 | 文字列内の全角文字を半角文字に変換します |
vbKatakana | 16 | 文字列内のひらがなをカタカナに変換します |
vbHiragana | 32 | 文字列内のカタカナをひらがなに変換します |
vbUnicode | 64 | システムの既定のコードページを使って文字列をUnicodeに変換します |
vbFromUnicode | 128 | 文字列をUnicodeからシステムの既定のコードページに変換します |
ストリングコンバート関数と読みます。
StrConv関数は文字の変換(StrConv)の使い方を説明します。文字変換の種類は、「大文字⇔小文字・カタカナ⇔ひらがな・・・」など、さまざまな形に変換します。
参考になるとおもいますので、、ぜひよんでみてください。
もう1つの細工
社内のシステムから、名前のカナをコピペする場合ですが、通常はスペースがあるはずです。
スペースがあるとこのコードは作動しないので、スペースをあらかじめ削除します。
Replace関数を利用しますが、Nz関数を利用しないとエラーが発生します。
一旦、入力したけど、入力の値を削除して、再度入力する場合に、
このようなエラーが発生します。
つまり、Nz関数で、Nullを、””変換することで、上記のエラー発生を防ぎます。
入力フォームを作成するときの小技 作業手順 その3 決まった桁数を入力させたい
このようなコードを更新前処理に仕込みます。
携帯のテキストボックスの横に、無というボタンを作成しました。
この時代、携帯を持っていない人はいないでしょうが、自宅の電話番号を持っていない人はいます。
その時に、空白にすると、そのデータベースを見た人は、
自宅の電話は、ないんじゃないのと思います。
じゃないの?はダメ
無と即答できるようにしましょう。
そして、何より、空白なら、標準モジュールに居座る、入力漏れの怒りに触れます。
入力フォームを作成するときの小技 作業手順 その4 日付入力の面倒を解消
入社日入力のボタンを押すと、下記のオームが起動します。
Yyyymmdd をyyyy/mm/dd へ変更します。
ここでも入力漏れは許しません。
入力フォームを作成するときの小技 作業手順 その5 編集不可にする
この社員IDが編集されると、データ更新ができません。
よく言えば編集
悪く言えば改ざん
なので、フォームをよみこんだ時点で編集不可にします。
ここがポイント
入力フォーム作成時の小技を紹介しました。
かつての動画で紹介した技もあります。
今回、1番言いたいことは、Replace関数のくだりです。
規則性がないなら、Replace関数で規則性を自分で作成するということです。
規則性が有れば、Split関数なども利用して、分割、結合などもできます。
競馬ネタですが、規則性を作りだして、必要な情報を抽出するという技は、日常茶飯事で使います。
発想の柔軟性は、VBAのコードを記載するに当たり、本当に重要なのです。
まとめ
さすがに、もう、新しい気付きは、非連結のテキストボックスで入力フォームを作成では、無いと思います。
いやいや、まだるかも?
いや、あってほしいと思います。
この小さな気付きの蓄積が、スキルアップなのです。
今回のサンプルファイルは、No247です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。