ACCESSは、共有で利用すると、データベースに矛盾が生じましたというエラーが発生する可能性があります。
これはACCESSの宿命なのですが、そのエラーを回避するためには非連結で入力フォームを作成することです。
目次
非連結のテキストボックスで入力フォームを作成
こんにちは。伊川(@naonaoke)です。
会社でシステムを一新するために既存の知識ではなく、新しい要素を含めてシステムを作成しています。
その時に、今までは、テーブルに連結していたテキストボックスで入力フォームを作成していました。
しかし、ネットワークドライブ上でACCESSを利用すると、どうしてもバグが発生する可能性が高くなります。
このバグを回避するためには、テキストボックスを非連結することで回避できる可能性があります。
全て非連結で作成した場合、きっと、新しい気付きがあると思いましたので、その、気付きをブログにしたいと思います。
このブログはこんな人にお勧め
- ACCESSの作動を軽くしたい人
- DAOを勉強している人
- ネットワークドライブ上で、ACCESSを利用している人
このブログを、読み終わるころには・・・・
非連結で入力フォームを作成すると、様々な細工ができます。全ての入力フォームでの入力漏れも、数行のFunctionプロシージャで、防ぐことができます。
非連結のテキストボックスとは?
デザインビューで開くと、このように、非連結と表示されるテキストボックスです。
もう一度説明すると、連結とは、テーブルに紐づいているテキストボックスです。
非連結のテキストボックスは、テーブルに紐づいていないため、すべてにおいて、設定が必要となります。
VBAで書くコードが多くなります。
その分だけ、細工が可能です。
Functionも初めて、便利だと思った瞬間です。
非連結で入力フォームを作成 作業手順 その1 テーブルを作成
最初にテーブルを作成するのですが、型を決めます。当然、この型は、非連結のテキストボックスに設定しなければなりません。
非連結で入力フォームを作成 作業手順 その2 テーブルにデータを反映させる
このように、テーブルに反映させたいデータは、各フィールド毎に設定する必要があります。
しかし、すでに細工をしています。
入力漏れです。
入力漏れに関しては、動画でも、ブログでも、何度も言っていますが、なぜか人気がありません。
しかし、データベースの最大の敵は、入力漏れです。
入力漏れに関しては、細心の注意が必要です。
非連結で入力フォームを作成 作業手順 その3 テキストボックスに細工
非連結のテキストボックスの名前に、すべて、txtを付けました。
このtxtという冠を付けるだけで、controlオブジェクトで一括処理ができます。
これは、非連結のテキストボックスだからこそできるメリットです。
非連結で入力フォームを作成 作業手順 その4 Functionが活躍
Functionを検索すると、必ず、消費税の計算と、合否判定です。
自分で初めてFunctionが便利と感じた瞬間でした。
Functionで入力漏れ判定
- ワイルドカードを利用して、すべてのテキストボックスを操作します。
- Functionを利用する
- controlオブジェクトで一括処理
まさか、こんなことができるようになるとはと思った感動の一瞬でした。
この入力漏れ判定は、すべての非連結のテキストボックスに、txtという冠を付けておけば、すべてのフォームで利用することが可能です。
初心者の頃、長いコードを記載していましたが、15行以上のコード書いている場合は、何かしらの短縮方法があります。
Functionでデータを一括消去
このコードで、txtの冠がついた、非連結のテキストボックスのデータをすべて消去できます。
Functionを利用しないと、すべての非連結のテキストボックスに、クリアするコードを書かなければなりません。
非連結で入力フォームを作成 作業手順 その5 標準モジュールで気を付けること
標準モジュールからの呼出
Module1.データ消去
このように記載します。
Callで呼び出せるものと思っていました。
もちろん、Callも利用できますが、この場合は、Module1.データ消去なのです。
現在のフォームを特定する方法
Excelとココが違う
Excelで標準モジュールを利用する場合は、アクティブなシートに命令を出します。
ACCESSは違います。
このエラーが発生します。
そうなんです。標準モジュールから、アクティブなフォームであっても、MeではACCESSは特定できないのです。
For Each myCtrl In Screen.ActiveForm.Controls
だから、このように記載しないと、ダメなんです。
なぜダメなのかというと、ACCESSの構造の問題なので、それを記載すると、長くなるので、機会があえば紹介します。
ここがポイント
今回は、そのままコードを書いていくと、非常にコードが長くなります。
だから、できるだけ、コンパクトに、コードを短縮する努力をしました。
繰り返し使うのは、Functionを使う
非連結のテキストボックスを一括処理する
これは、ヒマな時に新しいコードを見る事です。
理解しなくてもいいです。
なぜ、このような書き方ができるのだろうと思うことが重要です。
コードは、Yohooの知恵袋でいくらでも見ることができます。
特に、カテゴリーマスターのコードを参考にすると、とても勉強になります。
何度も言いますが、VBAは創作ではなく、コードを発見することなのです。
まとめ
今回は、感動の嵐でした。
こんなにも、私自身が未熟であったことや、なんと言っても、Functionの利便性を感じた日でした。
まだ、全然未熟ですが、今回のシステムを作成することが、本当に楽しくなりました。
今回も最後まで読んでいただき、ありがとうございました。
<strong><span style=”background-color: #ff00ff; color: #ffffff; font-size: 24pt;”>今回のサンプルファイルは、No244です。</span></strong>
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。