Erkennen der Grenzen eines DAO-Recordsets

Wenn Sie in einem Recordset-Objekt versuchen, über den Anfangs- oder Enddatensatz hinaus zu wechseln, tritt ein Laufzeitfehler auf. Wenn Sie beispielsweise versuchen, die MoveNext-Methode zu verwenden, wenn Sie sich bereits am letzten Datensatz des Recordset-Datensatzes befinden, tritt ein abfangbarer Fehler auf. Aus diesem Grund ist es hilfreich, die Grenzen des Recordset-Objekts zu kennen.

Die BOF-Eigenschaft gibt an, ob sich die aktuelle Position am Anfang des Recordset -Objekt befindet. Wenn BOF den Wert True aufweist, ist die aktuelle Position vor dem ersten Datensatz im Recordset-Objekt. Die BOF-Eigenschaft weist auch den Wert True auf, wenn keine Datensätze im Recordset-Objekt vorhanden sind, wenn es geöffnet ist.

Auf ähnliche Weise ist die EOF-Eigenschaft True, wenn die aktuelle Position hinter dem letzten Datensatz im Recordset-Objekt liegt oder wenn keine Datensätze zur Verfügung stehen.

Das folgende Codebeispiel zeigt, wie Sie die Eigenschaften BOF und EOF verwenden, um den Anfang und das Ende eines Recordset-Objekts zu erkennen. Dieses Codefragment erstellt ein Recordset vom Tabellentyp recordset basierend auf der Tabelle Orders aus der aktuellen Datenbank. Sie bewegt sich durch die Datensätze, zuerst vom Anfang des Recordset-Datensatzes zum Ende und dann vom Ende des Recordset-Datensatzes zum Anfang.

Dim dbsNorthwind As DAO.Database 
Dim rstOrders As DAO.Recordset 
 
   Set dbsNorthwind = CurrentDb 
   Set rstOrders = dbsNorthwind.OpenRecordset("Orders") 
 
   ' Do until ending of file. 
   Do Until rstOrders.EOF 
      ' 
      ' Manipulate the data. 
      ' 
      rstOrders.MoveNext            ' Move to the next record. 
   Loop 
 
   rstOrders.MoveLast               ' Move to the last record. 
 
   ' Do until beginning of file. 
   Do Until rstOrders.BOF 
      ' 
      ' Manipulate the data. 
      ' 
      rstOrders.MovePrevious        ' Move to the previous record. 
   Loop 

Beachten Sie, dass es unmittelbar nach der ersten Schleife keinen aktuellen Datensatz gibt. Die Eigenschaften BOF und EOF haben beide die folgenden Merkmale.

  • Wenn das Recordset-Objekt keine Datensätze enthält, wenn Sie es öffnen, weisen die Eigenschaften BOF und EOF beide den Wert True auf.

  • Wenn BOF oder EOF den Wert True aufweisen, bleibt der Wert der Eigenschaft True, bis Sie zu einem vorhandenen Datensatz gelangen. Zu diesem Zeitpunkt ändert sich der Wert von BOF oder EOF zu False.

  • Wenn BOF oder EOF den Wert False aufweist und der einzige Datensatz in einem Recordset gelöscht wird, bleibt der Wert der Eigenschaft False, bis Sie versuchen, zu einem anderen Datensatz zu gelangen. Zu diesem Zeitpunkt ändert sich der Wert sowohl von BOF als auch von EOF zu True.

  • In dem Moment, in dem Sie ein Recordset erstellen oder öffnen, das mindestens einen Datensatz enthält, ist der erste Datensatz der aktuelle Datensatz und sowohl BOF als auch EOF weisen den Wert False auf.

  • Wenn der erste Datensatz der aktuelle Datensatz ist, wenn Sie die MovePrevious-Methode verwenden, wird der Wert von BOF auf True festgelegt. Wenn Sie MovePrevious verwenden, während BOF den Wert True aufweist, tritt ein Laufzeitfehler auf. Wenn dies geschieht, weist BOF weiterhin den Wert True auf, und es ist kein aktueller Datensatz vorhanden.

  • Ebenso ändert sich der Wert der EOF-Eigenschaft zu True, wenn Sie über den letzten Datensatz im Recordset hinausgehen. Wenn Sie die MoveNext-Methode verwenden, während EOF den Wert True aufweist, tritt ein Laufzeitfehler auf. Wenn dies geschieht, weist EOF weiterhin den Wert True auf, und es ist kein aktueller Datensatz vorhanden.

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.