Recordset2.Requery-Methode (DAO)
Gilt für: Access 2013, Office 2013
Aktualisiert die Daten in einem Recordset-Objekt, indem die Abfrage erneut ausgeführt wird, auf der das Objekt basiert.
Syntax
Ausdruck . Requery(NewQueryDef)
Ausdruck Eine Variable, die ein Recordset2-Objekt darstellt.
Parameter
Name |
Erforderlich/optional |
Datentyp |
Beschreibung |
---|---|---|---|
NewQueryDef |
Optional |
Variant |
Stellt den Name-Eigenschaftenwert eines QueryDef-Objekts dar |
Bemerkungen
Verwenden Sie diese Methode, um sicherzustellen, dass ein Recordset die aktuellen Daten enthält. Diese Methode füllt das aktuelle Recordset neu aus, indem sie entweder die aktuellen Abfrageparameter oder (in einem Microsoft Access-Arbeitsbereich) die vom newquerydef-Argument neu bereitgestgellten verwendet.
Wenn Sie kein newquerydef-Argument angeben haben, wird das Recordset basierend auf der gleichen Abfragedefinition und den gleichen Parametern neu ausgefüllt, die ursprünglich zum Ausfüllen des Recordset verwendet wurden. Änderungen der zugrunde liegenden Daten werden während des erneuten Ausfüllens berücksichtigt. Wenn Sie keine QueryDef zum Erstellen des Recordset verwendet haben, wird das Recordset komplett neu erstellt.
Wenn Sie das ursprüngliche QueryDef im Argument „newquerydef“ angeben, wird das Recordset mithilfe der durch QueryDef angegebenen Parameter erneut abgefragt. Änderungen an den zugrunde liegenden Daten werden während dieser erneuten Auffüllung angezeigt. Um Änderungen an den Abfrageparameterwerten im Recordset widerzuspiegeln, müssen Sie das newquerydef-Argument angeben.
Wenn Sie eine andere QueryDef als die angeben, die ursprünglich zum Erstellen des Recordset verwendet wurde, wird das Recordset komplett neu erstellt.
Wenn Sie Requery verwenden, wird der erste Datensatz im Recordset der aktuelle Datensatz.
You can't use the Requery method on dynaset- or snapshot-type Recordset objects whose Restartable property is set to False. Wenn Sie aber das optionale newquerydef-Argument angeben, wird die Restartable-Eigenschaft ignoriert.
Wenn sowohl die BOF- als auch die EOF-Eigenschafteneinstellung des Recordset-Objekts True lautet, nachdem Sie die Requery-Methode angewendet haben, hat die Abfrage keine Datensätze zurückgegeben, und das Recordset enthält keine Daten.
Beispiel
Dieses Beispiel zeigt, wie die Requery-Methode zum Aktualisieren einer Abfrage verwendet werden kann, nachdem die zugrunde liegenden Daten geändert wurden.
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
Dieses Beispiel zeigt, wie die Requery-Methode zum Aktualisieren einer Abfrage verwendet werden kann, nachdem die Abfrageparamter geändert wurden.
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