Compartilhar via


Método Recordset2.Requery (DAO)

Aplica-se a: Access 2013, Office 2013

Atualiza os dados no objeto Recordset reexecutando a consulta na qual o objeto é baseado.

Sintaxe

expressão . Requery(NewQueryDef)

Expressão Uma variável que representa um objeto Recordset2 .

Parâmetros

Nome

Necessária/opcional

Tipo de dados

Descrição

NewQueryDef

Opcional

Variant

Representa o valor da propriedade Name de um objeto QueryDef

Comentários

Use este método para garantir que um Recordset contenha os dados mais recentes. Esse método preenche novamente o Recordset atual utilizando parâmetros de consulta atuais ou (em um espaço de trabalho do Microsoft Access) os novos parâmetros fornecidos pelo argumento newquerydef.

Se você não especificar um argumento newquerydef, o Recordset será preenchido novamente com base na mesma definição de consulta e nos parâmetros utilizados para preencher originalmente o Recordset. Qualquer alteração nos dados de base será refletida durante esse repreenchimento. Se você não usou QueryDef para criar o Recordset, o Recordset é recriado do zero.

Se você especificar o QueryDef original no argumento newquerydef, o Recordset é consultado novamente utilizando os parâmetros especificados pelo QueryDef. As alterações feitas nos dados subjacentes serão refletidas durante esse novo preenchimento. Para refletir qualquer alteração nos valores de parâmetro da consulta no Recordset, forneça o argumento newquerydef.

Se você especificar um QueryDef diferente do originalmente utilizado para criar o Recordset, o Recordset será recriado do zero.

Quando você usa Requery, o primeiro registro no Recordset torna-se o registro atual.

Você não pode usar o método Requery nos objetos Recordset do tipo dynaset ou instantâneo cuja propriedade Restartable está definida como False. Entretanto, se você fornecer o argumento newquerydef opcional, a propriedade Restartable será ignorada.

Se as configurações das propriedades BOF e EOF do objeto Recordset forem True após a utilização do método Requery, a consulta não retornará nenhum registro, e o Recordset não conterá nenhum dado.

Exemplo

Este exemplo mostra como o método Requery pode ser usado para atualizar uma consulta após dados subjacentes serem alterados.

    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 

Este exemplo mostra como o método Requery pode ser utilizado para atualizar uma consulta após a alteração dos parâmetros de consulta.

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