Поделиться через


Метод Recordset.Requery (DAO)

Область применения: Access 2013, Office 2013

Обновляет данные в объекте Recordset с помощью повторного выполнения запроса, на котором основан объект.

Синтаксис

expression . Requery(NewQueryDef)

expression: переменная, представляющая объект Recordset.

Параметры

Имя

Обязательный/необязательный

Тип данных

Описание

NewQueryDef

Необязательный

Variant

Представляет значение свойства Name объекта QueryDef

Примечания

Используйте этот метод, чтобы обеспечить наличие самых последних данных в объекте Recordset. Этот метод повторно заполняет текущий объект Recordset с помощью текущих параметров запроса или (в рабочей области Microsoft Access) новыми параметрами, предоставляемыми аргументом newquerydef.

Если аргумент newquerydef не указан, объект Recordset повторно заполняется на основе того же определения запроса и параметров, использованных изначально для заполнения объекта Recordset. Все изменения базовых данных будут отражены во время этого повторного заполнения. Если вы не используете объект QueryDef для создания объекта Recordset, Recordset повторно создается с нуля.

Если в аргументе newquerydef указан исходный объект QueryDef, объект Recordset повторно запрашивается с помощью параметров, указанных объектом QueryDef. Все изменения базовых данных будут отражены во время этого повторного заполнения. Чтобы отразить любые изменения значений параметров запроса в объекте Recordset, необходимо указать аргумент newquerydef.

Если указать другой объект QueryDef вместо использованного изначально для создания объекта Recordset, Recordset повторно создается с нуля.

При использовании метода Requery первая запись в объекте Recordset становится текущей записью.

Вы не можете использовать метод Requery для объектов Recordset типа "Динамический набор" или "Статический набор", свойству Restartable которых присвоено значение False. Но если указан необязательный аргумент newquerydef, свойство Restartable игнорируется.

Если свойствам BOF и EOF объекта Recordset присвоено значение True после использования метода Requery, запрос не возвращает какие-либо записи и объект Recordset не содержит данных.

Пример

В этом примере показано, как можно использовать метод Requery для обновления запроса после изменения базовых данных.

    Sub RequeryX() 
     
     Dim dbsNorthwind As Database 
     Dim qdfTemp As QueryDef 
     Dim rstView As Recordset 
     Dim rstChange As Recordset 
     
     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 Recordset 
 
 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