#587 サブフォームの表示切り替えをより速くする方法 フォーム、VBA

メイン/サブフォーム形式のフォームでは、”リンクフィールド”(リンク親フィールド/リンク子フィールドプロパティ)が設定してあれば、メインフォーム側のレコード移動や、テキストボックスへの入力値あるいはコンボボックスの選択値などに応じて自動的にサブフォーム内の表示レコードが切り替わります。

ただ、サブフォーム側のデータ量やレコードソースのクエリの複雑さなどによって、ほんのワンテンポ、サブフォームの抽出レコードの切り替えレスポンスが遅いように感じる場合があります。

そのような場合、Accessの自動的なリンク機能に任せ切りにせず、VBAのちょっとしたコードを入れることで、感覚的に素早く表示切り替えさせることができます。

ここでは、そのプログラム例を2つ紹介します。いずれも、サブフォームコントロールの名前が「発注先_sub」であるとします。そしてプログラムとしてはそのサブフォームコントロールを”再クエリするだけ”です。


■メインフォームのレコード移動に応じてサブフォームを切り替える場合
メインフォーム側の「レコード移動時」イベントプロシージャを次のようにします。

Private Sub Form_Current()

  Me!発注先_sub.Requery

End Sub


■メインフォームのコンボボックスに応じてサブフォームを切り替える場合
メインフォーム側のコンボボックス(ここでは「ID」という名前のコントロール)の「更新後処理」イベントプロシージャを次のようにします。

Private Sub ID_AfterUpdate()

  Me!発注先_sub.Requery

End Sub

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved