#651 | サブフォームのRequeryメソッドの使い分け | フォーム、VBA | |
フォームに表示されているデータを最新情報に更新する、いわゆる「再クエリ」をしたい場合、マニュアル操作であればリボンの[すべて更新]ボタンをクリックしたり、Shiftキーを押しながらF9キーを押したりすることで実行できます。 一方、VBAのプログラムから行いたい場合には、フォームに対して「Requery」メソッドを実行します。 そのとき、その対象が「サブフォーム」コントロール内のフォームである場合、次のような2つの書き方ができます。 Me!受注明細_sub.Requery Me!受注明細_sub.Form.Requery ここでは「受注明細_sub」というのがサブフォームコントロールの名前です。前者はそのサブフォームコントロールに対してRequeryメソッドを実行しています。一方、後者の場合はサブフォームコントロール内にあるFormオブジェクトに対してRequeryメソッドを実行しています。 両者とも表示されているデータを最新情報に更新するという動作は同じなのですが、見た目の挙動に若干の違いがあります。 ここでは、次のようなフォームを用意して、その違いを確認していきます。
【操作例】
【結果】 上記のように、2つの方法には「再クエリ後のカレントレコードの位置」の違いがあります。意図的に先頭レコードに戻したい場合もあるかもしれません、カレントレコードや画面のスクロール位置などは保持したままにしたい場合もあるかもしれません。ケースバイケースではありますが、その点が使い分けのひとつの判断基準となります。 また、もし再クエリを実行したあとにすぐにサブフォーム内のデータを編集できる状態にしたい場合、「.Requery」ではプログラムでフォーカスを移動させる(.SetFocusメソッドを実行する)必要があります。「.Form.Requery」を使った場合はそのメソッドは要りませんが、あったからといってエラーになるわけでもありませんので、その点の大差はありません。 【補足】
|
|||
|
Copyright © T'sWare All rights reserved |