ぴゅーもんブログ

カナダ生まれの日本育ち白イルカ(ベルーガ)のぬいぐるみぴゅーもんのブログです、ハワイにもいったよ〜(不定期のんびり更新)

MS ACCESS(へたれな)コネタ フォームはクラスモジュール?

VB系の世界では、フォームは特殊なクラスモジュールです。ACCESSでも基本的には、フォームはクラスに近い動きをします。フォームのインスタンスはACCESS自身に自動的に生成され、グローバルなスコープでアクセスできます。これは、VBもACCESSのVBAも同じです。ただ、ACCESSでは、クラスがインスタンス生成時の「Initial」イベントを使用できません。また、通常ACCESSでは「New」キーワードによってフォームをインスタンス化することはありませんので、通常にフォームをオープンした場合(DoCmdで)と挙動が少し異なるような気がします。「OpenArgs」とかのプロパティの状態が予想外の動きをするような気がします。まだ、詳細を把握し切れていませんけどね。

追記:なぜこんなことしたいかの理由
データをバインドしていないフォームで、最初にフォームロード時にフォーム内のフィールドへ表示したデータをもとに編集し登録処理を行なう時に、登録時に編集前データを参照したかったためです。フォームにテーブルをバインドしている場合には、このような処理は簡単にできるのですが、バインドしていない場合には、ユーザ定義型の変数などに保持しておくなどが必要です、その仕組みを作るのが面倒でしたので、該当フォームそのものの別インスタンスを生成して、編集前のデータを保存する仕組みにしました。