Access データベースで "Requery/再クエリ" マクロ アクションを使用すると、コントロールのソースを再クエリすることで、アクティブなオブジェクト上の指定したコントロールのデータを更新することができます。 コントロールが指定されていない場合、オブジェクト自体のソースが再クエリされます。 このアクションを使用し、アクティブなオブジェクトまたはそのコントロールの 1 つに最新のデータが表示されるようにします。
設定
"Requery/再クエリ" マクロ アクションには次の引数があります。
アクションの引数 |
説明 |
コントロール名 |
更新するコントロールの名前です。 マクロ デザイン ウィンドウの [コントロール名] ボックスにコントロール名を入力します。 (Forms!フォーム名!コントロール名) 完全修飾識別子ではなく、コントロールの名前だけを使用してください。 この引数を空にすると、アクティブなオブジェクトのソースが再クエリされます。 アクティブなオブジェクトがデータシートか、クエリ結果セットの場合、この引数を空にする必要があります。 |
解説
"Requery/再クエリ" マクロ アクションは、次のいずれかを実行します。
-
コントロールまたはオブジェクトが基礎にするクエリを再実行します。
-
新しいレコードや変更されたレコードを表示し、コントロールまたはオブジェクトが基礎にするテーブルから削除済みのレコードを削除します。
注: "Requery/再クエリ" マクロ アクションは、レコード ポインターの位置に影響を与えません。
クエリまたはテーブルを基礎とするコントロールに含まれるもの:
-
リスト ボックスとコンボ ボックス。
-
サブフォーム コントロール。
-
OLE オブジェクト (グラフなど)。
-
(DSum のような) 定義域集合関数を含むコントロール。
指定したコントロールがクエリまたはテーブルを基礎としていない場合、このアクションでは、コントロールの再計算が強制されます。
"Control Name/コントロール名" 引数を空にした場合、"Requery/再クエリ" アクションは、オブジェクトにフォーカスがあるときに SHIFT+F9 を押した場合と同じ操作になります。 サブフォーム コントロールにフォーカスがある場合、このアクションでは、サブフォームのソースのみが再クエリされます (SHIFT+F9 を押した場合と同じ)。
注: Requery マクロ アクションは、コントロールまたはオブジェクトのソースを再クエリします。 一方、 RepaintObject マクロ アクションは、指定したオブジェクト内のコントロールを再描画しますが、データベースの再クエリや新しいレコードの表示は行いません。 ShowAllRecords マクロ アクションは、アクティブなオブジェクトを再クエリするだけでなく、適用されたフィルターも削除します。これは、Requery マクロ アクションでは実行されません。
アクティブなオブジェクトにないコントロールを再クエリする場合、"Requery/再クエリ" マクロ アクションや DoCmd オブジェクトの "Requery/再クエリ" メソッドではなく、Visual Basic for Applications (VBA) モジュールの "Requery/再クエリ" メソッドを使用する必要があります。 VBA の "Requery/再クエリ" メソッドは、"Requery/再クエリ" マクロ アクションや DoCmd.Requery メソッドより高速になります。 また、"Requery/再クエリ" マクロ アクションまたは DoCmd.Requery メソッドを使用すると、Access はクエリを閉じ、データベースから再度読み込みますが、"Requery/再クエリ" メソッドを使用すると、Access は閉じて再度読み込むことなくクエリを再実行します。 ActiveX Data Object (ADO) "Requery/再クエリ" メソッドは、Access "Requery/再クエリ" メソッドと同じように機能します。