Compartir a través de


Método Recordset.Requery (DAO)

Se aplica a: Access 2013, Office 2013

Actualiza los datos en un objeto Recordset al volver a ejecutar la consulta en la que se basa el objeto.

Sintaxis

expresión . Requery(NewQueryDef)

expression Variable que representa un objeto Recordset.

Parameters

Nombre

Obligatorio/opcional

Tipo de datos

Descripción

NewQueryDef

Opcional

Variant

Representa el valor de la propiedad Name de un objeto QueryDef

Comentarios

Use este método para asegurarse de que un Recordset contiene los datos más recientes. Este método rellena el objeto Recordset usando los parámetros de consulta actuales o (en un área de trabajo de Microsoft Access) los nuevos parámetros proporcionados por el argumento newquerydef.

Si no especifica un argumento newquerydef, Recordset se rellena basándose en la misma definición de consulta y parámetros que se usaron originalmente para llenar Recordset. Cualquier cambio en los datos subyacentes se reflejará durante este nuevo relleno. Si no usó QueryDef para crear Recordset, Recordset se vuelve a crear desde cero.

Si especifica el objeto QueryDef original en el argumento newquerydef, se vuelve a consultar Recordset mediante los parámetros especificados por QueryDef. Los cambios realizados en los datos subyacentes se reflejarán durante este nuevo relleno. Para reflejar cualquier cambio en los valores de los parámetros de consulta en Recordset, debe proporcionar el argumento newquerydef.

Si especifica un objeto QueryDef diferente al que se usó originalmente para crear Recordset, Recordset se vuelve a crear desde cero.

Cuando usa Requery, el primer registro de Recordset se convierte en el registro activo.

No puede usar el método Requery en objetos Recordset de tipo dynaset o snapshot cuya propiedad Restartable está establecida en False. No obstante, si proporciona el argumento opcional newquerydef, se omite la propiedad Restartable.

Si los dos valores de las propiedades BOF y EOF del objeto Recordset son True después de usar el método Requery, la consulta no devuelve ningún registro y Recordset no contiene datos.

Ejemplo

Este ejemplo muestra cómo el método Requery puede usarse para actualizar una consulta después de cambiar los datos subyacentes.

    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 

En este ejemplo se muestra cómo se puede utilizar el método Requery para actualizar una consulta después de cambiar los parámetros de consulta.

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