pickup

ACCESSで1つの入力フォームに、入力項目が多いと気持ちが折れます。

そんな時は、入力フォームを分割すると、スッキリします。

しかし、データの追加方法が、少し異なります。

目次

スポンサーリンク

非連結のテキストボックスからデータを追加するとき

こんにちは。伊川(@naonaoke)です。

今回は、入力フォームを2つ用意します。

1つのフォームに入力項目が多いときは、入力フォームを分割するといいかなと思います。

その時のデータの追加方法に問題があります。

自分で作成していて、改めて、俺はバカだと思った瞬間でした。

Naosuke
やっぱり、私は、バカでした。

 

Naosuke
上記の記事の続きになります。
スポンサーリンク

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

 

今回のテーマ
  • ACCESSで入力フォームを作成している人
  • VBAで、アクションクエリを実行したい人
  • 非連結のテキストボックスで入力フォームを作成したい人

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

連結であれ、非連結であれ、入力フォームを作成することができます。
また、入力フォームを作成する際の小技も覚えることができます。
データベースの最大の敵は、入力漏れです。
スポンサーリンク

フォームを作成していて、バカと思った瞬間

スポンサーリンク
この入力フォームから、同時登録をした場合にどうなるのかと考えました。

異なる他人が同時登録はあり得ません。

しかし、絶対にないとは言えません。

社員ID、123を編集中に、ヤマダの登録がされた場合、検証はしていませんが、恐らく、伊川直助とは無関係の情報が登録されるのではないか?

多分、早い者勝ちで、無関係な情報が反映されます。

この場合は、新しくデータを追加するのではなく、社員IDを抽出条件として、空白のデータを、有効なデータに更新するということになります。

 

しかし、このフォームには、社員IDがありません。

ココが問題です。

入力フォームを作成するときの小技 作業手順 その1 他のフォームの情報を参照する

1番始めに入力した社員IDを再利用します。

VBAは、上から順番に処理されます。

現在開いているフォームが、F_入力です。

社員IDをF_入力_2に値を渡します。

ロジック
登録ボタンを実行
F_入力_2を開く
社員IDの値を渡す

F_入力を閉じる

入力フォームを作成するときの小技 作業手順 その2 半角カナのみを入力させたい

名前のカナを半角カタカナで入力させたい場合、イチイチ、IMEモードを変換するのは面倒です。

このようなコードを記載します。

StrConv関数を利用します。

StrConv関数の説明

定数内容
vbUpperCase1文字列を大文字に変換します
vbLowerCase2文字列を小文字に変換します
vbProperCase3文字列の各単語の先頭の文字を大文字に変換します
vbWide4文字列内の半角文字を全角文字に変換します
vbNarrow8文字列内の全角文字を半角文字に変換します
vbKatakana16文字列内のひらがなをカタカナに変換します
vbHiragana32文字列内のカタカナをひらがなに変換します
vbUnicode64システムの既定のコードページを使って文字列をUnicodeに変換します
vbFromUnicode128文字列をUnicodeからシステムの既定のコードページに変換します

ストリングコンバート関数と読みます。

StrConv関数は文字の変換(StrConv)の使い方を説明します。文字変換の種類は、「大文字⇔小文字・カタカナ⇔ひらがな・・・」など、さまざまな形に変換します。

Naosuke
手前味噌ですが、このコードを書いたとき、少しだけスキルがついたような気がしました。
参考になるとおもいますので、、ぜひよんでみてください。

もう1つの細工

社内のシステムから、名前のカナをコピペする場合ですが、通常はスペースがあるはずです。

スペースがあるとこのコードは作動しないので、スペースをあらかじめ削除します。

 

Replace関数を利用しますが、Nz関数を利用しないとエラーが発生します。

一旦、入力したけど、入力の値を削除して、再度入力する場合に、

このようなエラーが発生します。

つまり、Nz関数で、Nullを、””変換することで、上記のエラー発生を防ぎます。

Naosuke
なんてことはない、エラーですが、エンドユーザーは、この手のデバックはいやがりますよね

 

入力フォームを作成するときの小技 作業手順 その3 決まった桁数を入力させたい

 

このようなコードを更新前処理に仕込みます。

携帯のテキストボックスの横に、無というボタンを作成しました。

この時代、携帯を持っていない人はいないでしょうが、自宅の電話番号を持っていない人はいます。

その時に、空白にすると、そのデータベースを見た人は、

自宅の電話は、ないんじゃないのと思います。

Naosuke

じゃないの?はダメ

無と即答できるようにしましょう。

そして、何より、空白なら、標準モジュールに居座る、入力漏れの怒りに触れます。

入力フォームを作成するときの小技 作業手順 その4 日付入力の面倒を解消

 

入社日入力のボタンを押すと、下記のオームが起動します。

Naosuke
8桁以外は入力させません。

 

Yyyymmdd をyyyy/mm/dd へ変更します。

ここでも入力漏れは許しません。

Naosuke
Fcuntionは便利ですね

 

入力フォームを作成するときの小技 作業手順 その5 編集不可にする

この社員IDが編集されると、データ更新ができません。

Naosuke

よく言えば編集

悪く言えば改ざん

なので、フォームをよみこんだ時点で編集不可にします。

ここがポイント

ここがポイント
Function8.png
入力フォーム作成時の小技を紹介しました。
かつての動画で紹介した技もあります。
今回、1番言いたいことは、Replace関数のくだりです。
規則性がないなら、Replace関数で規則性を自分で作成するということです。
規則性が有れば、Split関数なども利用して、分割、結合などもできます。
競馬ネタですが、規則性を作りだして、必要な情報を抽出するという技は、日常茶飯事で使います。
発想の柔軟性は、VBAのコードを記載するに当たり、本当に重要なのです。
動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

 

さすがに、もう、新しい気付きは、非連結のテキストボックスで入力フォームを作成では、無いと思います。

いやいや、まだるかも?

いや、あってほしいと思います。

この小さな気付きの蓄積が、スキルアップなのです。

 

今回のサンプルファイルは、No247です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事