Recordset2.Requery メソッド (DAO)

適用先: Access 2013、Office 2013

Recordset オブジェクトの基になるクエリを再実行して、そのオブジェクトのデータを更新します。

構文

。Requery(NewQueryDef)

Recordset2 オブジェクトを表す変数。

パラメーター

名前

必須かどうか

データ型

説明

NewQueryDef

省略可能

Variant

QueryDef オブジェクトの Name プロパティの値を表します。

注釈

Recordset が最新のデータを含んでいるかこの方法を使って確認します。 このメソッドでは、現在のクエリ パラメーターを使用するか、または (Microsoft Access ワークスペースの場合)、newquerydef 引数で指定された新しいクエリ を使用して、現在のRecordsetにデータが再読み込みされます。

newquerydef 引数を指定しない場合、 Recordset に対するデータの再読み込みは、その Recordset に最初にデータが読み込まれたときと同じクエリ定義とパラメーターに基づいて行われます。 基になるデータに変更があった場合は、この再読み込み時に反映されます。 QueryDef を使用して Recordset を作成していない場合は、 Recordset が最初から再作成されます。

newquerydef 引数に元の QueryDefを指定した場合は、QueryDef で指定されたパラメーターを使用して Recordset が再取得されます。 この再読み込み中に、基になるデータの変更が反映されます。 クエリ パラメーターの値に対する変更を Recordset に反映するには、newquerydef 引数を指定する必要があります。

最初に Recordset を作成したときとは異なる QueryDef を指定した場合、Recordset は最初から再作成されます。

Requery を使用すると、Recordset 内の最初のレコードがカレント レコードとなります。

Requery メソッドは、 Restartable プロパティが False に設定されているダイナセット タイプまたはスナップショット タイプの Recordset オブジェクトでは使用できません。 しかし、オプションの newquerydef 引数を指定した場合は、 Restartable プロパティが無視されます。

Requeryメソッドを使用した後に、RecordsetオブジェクトのBOFEOF プロパティの両方の設定がTrue になった場合、クエリはレコードを返さず、Recordsetにデータは含まれません。

この例では、Requery メソッドを使用して、基になるデータが変更された後にクエリを更新する方法を示します。

    Sub RequeryX() 
     
     Dim dbsNorthwind As Database 
     Dim qdfTemp As QueryDef 
     Dim rstView As Recordset2 
     Dim rstChange As Recordset2 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     Set qdfTemp = dbsNorthwind.CreateQueryDef("", _ 
     "PARAMETERS ViewCountry Text; " & _ 
     "SELECT FirstName, LastName, Country FROM " & _ 
     "Employees WHERE Country = [ViewCountry] " & _ 
     "ORDER BY LastName") 
     
     qdfTemp.Parameters!ViewCountry = "USA" 
     Debug.Print "Data after initial query, " & _ 
     [ViewCountry] = USA" 
     Set rstView = qdfTemp.OpenRecordset 
     Do While Not rstView.EOF 
     Debug.Print " " & rstView!FirstName & " " & _ 
     rstView!LastName & ", " & rstView!Country 
     rstView.MoveNext 
     Loop 
     
     ' Change underlying data. 
     Set rstChange = dbsNorthwind.OpenRecordset("Employees") 
     rstChange.AddNew 
     rstChange!FirstName = "Nina" 
     rstChange!LastName = "Roberts" 
     rstChange!Country = "USA" 
     rstChange.Update 
     
     rstView.Requery 
     Debug.Print "Requery after changing underlying data" 
     Set rstView = qdfTemp.OpenRecordset 
     Do While Not rstView.EOF 
     Debug.Print " " & rstView!FirstName & " " & _ 
     rstView!LastName & ", " & rstView!Country 
     rstView.MoveNext 
     Loop 
     
     ' Restore original data because this is only a 
     ' demonstration. 
     rstChange.Bookmark = rstChange.LastModified 
     rstChange.Delete 
     rstChange.Close 
     
     rstView.Close 
     dbsNorthwind.Close 
     
    End Sub 

この例では、Requery メソッドを使用して、クエリ パラメーターが変更された後にクエリを更新する方法を示します。

Sub RequeryX2() 
 
 Dim dbsNorthwind As Database 
 Dim qdfTemp As QueryDef 
 Dim prmCountry As Parameter 
 Dim rstView As Recordset2 
 
 Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
 Set qdfTemp = dbsNorthwind.CreateQueryDef("", _ 
 "PARAMETERS ViewCountry Text; " & _ 
 "SELECT FirstName, LastName, Country FROM " & _ 
 "Employees WHERE Country = [ViewCountry] " & _ 
 "ORDER BY LastName") 
 Set prmCountry = qdfTemp.Parameters!ViewCountry 
 
 qdfTemp.Parameters!ViewCountry = "USA" 
 Debug.Print "Data after initial query, " & _ 
 [ViewCountry] = USA" 
 Set rstView = qdfTemp.OpenRecordset 
 Do While Not rstView.EOF 
 Debug.Print " " & rstView!FirstName & " " & _ 
 rstView!LastName & ", " & rstView!Country 
 rstView.MoveNext 
 Loop 
 
 ' Change query parameter. 
 qdfTemp.Parameters!ViewCountry = "UK" 
 ' QueryDef argument must be included so that the 
 ' resulting Recordset reflects the change in the query 
 ' parameter. 
 rstView.Requery qdfTemp 
 Debug.Print "Requery after changing parameter, " & _ 
 "[ViewCountry] = UK" 
 Do While Not rstView.EOF 
 Debug.Print " " & rstView!FirstName & " " & _ 
 rstView!LastName & ", " & rstView!Country 
 rstView.MoveNext 
 Loop 
 
 rstView.Close 
 dbsNorthwind.Close 
 
End Sub