Freigeben über


Recordset.AbsolutePosition-Eigenschaft (DAO)

Gilt für: Access 2013, Office 2013

Legt die relative Datensatznummer des aktuellen Datensatzes eines Recordset-Objekts fest oder gibt den betreffenden Wert zurück.

Syntax

Ausdruck .AbsolutePosition

Ausdruck Eine Variable, die ein Recordset-Objekt darstellt.

Bemerkungen

Sie können die AbsolutePosition -Eigenschaft verwenden, um den aktuellen Datensatzzeiger basierend auf seiner Position in einem Recordset -Objekt vom Typ Dynaset oder Momentaufnahme auf einen bestimmten Datensatz zu verschieben. Sie können auch die aktuelle Datensatznummer ermitteln, indem Sie die Einstellung der AbsolutePosition -Eigenschaft überprüfen.

Da der Wert der AbsolutePosition-Eigenschaft nullbasiert ist (d. a. die Einstellung 0 bezieht sich auf den ersten Datensatz im Recordset-Objekt ), können Sie ihn nicht auf einen Wert festlegen, der größer oder gleich der Anzahl der aufgefüllten Datensätze ist. Dies führt zu einem auffangbaren Fehler. Sie können die Anzahl der aufgefüllten Datensätze im Recordset-Objekt ermitteln, indem Sie die Einstellung der RecordCount-Eigenschaft überprüfen. Die maximal zulässige Einstellung für die AbsolutePosition-Eigenschaft ist der Wert der RecordCount-Eigenschaft minus 1.

Wenn kein aktueller Datensatz vorhanden ist, z. B. wenn keine Datensätze im Recordset-Objekt vorhanden sind, gibt AbsolutePosition –1 zurück. Wenn der aktuelle Datensatz gelöscht wird, wird der Wert der AbsolutePosition-Eigenschaft nicht definiert, und ein abfangbarer Fehler tritt auf, wenn darauf verwiesen wird. Neue Datensätze werden am Ende der Sequenz hinzugefügt.

Sie sollten diese Eigenschaft nicht als Ersatz-Datensatznummer verwenden. Lesezeichen sind immer noch die empfohlene Methode, um eine bestimmte Position beizubehalten und zu einer bestimmten Position zurückzukehren, und sind die einzige Möglichkeit, den aktuellen Datensatz über alle Typen von Recordset-Objekten hinweg zu positionieren. Die Position eines Datensatzes ändert sich, wenn ein oder mehr vorangehende Datensätze gelöscht werden. Es gibt auch keine Garantie, dass ein Datensatz die gleiche absolute Position hat, wenn das Recordset-Objekt erneut erstellt wird, da die Reihenfolge der einzelnen Datensätze innerhalb eines Recordset-Objekts nicht garantiert ist, es sei denn, er wird mit einer SQL-Anweisung mithilfe einer ORDER BY-Klausel erstellt.

Hinweis

  • Wird die AbsolutePosition-Eigenschaft bei einem neu geöffneten, jedoch leeren Recordset-Objekt auf einen Wert größer als Null festgelegt, tritt ein abfangbarer Fehler auf. Füllen Sie das Recordset-Objekt zuerst mit der MoveLast-Methode auf.
  • Die AbsolutePosition-Eigenschaft ist bei Recordset-Objekten des Typs Vorwärts nicht verfügbar. Sie ist auch bei Recordset-Objekten nicht verfügbar, die von Pass-Through-Abfragen zu ODBC-Datenbanken, die mit dem Microsoft Access-Datenbankmodul verbunden sind, geöffnet werden.

Beispiel

Dieses Beispiel verwendet die AbsolutePosition-Eigenschaft, um den Status einer Schleife nachzuverfolgen, in der alle Datensätze eines Recordset-Objekts aufgezählt werden.

    Sub AbsolutePositionX() 
     
       Dim dbsNorthwind As Database 
       Dim rstEmployees As Recordset 
       Dim strMessage As String 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
       ' AbsolutePosition only works with dynasets or snapshots. 
       Set rstEmployees = _ 
          dbsNorthwind.OpenRecordset("Employees", _ 
          dbOpenSnapshot) 
     
       With rstEmployees 
          ' Populate Recordset. 
          .MoveLast 
          .MoveFirst 
     
          ' Enumerate Recordset. 
          Do While Not .EOF 
             ' Display current record information. Add 1 to  
             ' AbsolutePosition value because it is zero-based. 
             strMessage = "Employee: " & !LastName & vbCr & _ 
                "(record " & (.AbsolutePosition + 1) & _ 
                " of " & .RecordCount & ")" 
             If MsgBox(strMessage, vbOKCancel) = vbCancel _ 
                Then Exit Do 
             .MoveNext 
          Loop 
     
          .Close 
       End With 
     
       dbsNorthwind.Close 
     
    End Sub