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 中的第一条记录将成为当前记录。
对于 Restartable 属性设置为 False 的动态集类型或快照类型 Recordset 对象,不能使用 Requery 方法。 但是,如果提供可选的 newquerydef 参数,则会忽略 Restartable 属性。
使用 Requery 方法后,如果 Recordset 对象的 BOF 和 EOF 属性设置均为 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