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