Поделиться через


Recordset2.AbsolutePosition property (DAO)

Область применения: Access 2013, Office 2013

Задает или возвращает относительный номер записи текущей записи объекта Recordset2 .

Синтаксис

выражение .AbsolutePosition

Выражение Переменная, представляющая объект Recordset2 .

Замечания

Свойство AbsolutePosition можно использовать для размещения указателя текущей записи на определенную запись на основе порядкового положения в объекте Recordset2 типа dynaset или snapshot. Вы также можете определить текущий номер записи с помощью настройки свойства AbsolutePosition.

Так как значение свойства AbsolutePosition отсчитывается от нуля (то есть значение 0 ссылается на первую запись в объекте Recordset2 ), нельзя задать значение, большее или равное числу заполненных записей; Это приводит к перехватываемой ошибке. Количество заполненных записей в объекте Recordset2 можно определить, проверив параметр свойства RecordCount . Максимально допустимое значение для свойства AbsolutePosition –значение свойства RecordCount минус 1.

Если текущей записи нет, как при отсутствии записей в объекте Recordset2 , функция AbsolutePosition возвращает –1. При удалении текущей записи, значение свойства AbsolutePosition не определяется, а перехватываемая ошибка возникает, если сослаться на него. Новые записи будут добавлены в конец последовательности.

Не следует использовать это свойство в качестве замены номеру записи. Закладки по-прежнему являются рекомендуемыми способами сохранения и возврата в заданную позицию и являются единственным способом размещения текущей записи во всех типах объектов Recordset2 . В частности положение запись изменяется при удалении одной или нескольких записей, расположенных перед ней. Кроме того, при повторном создании объекта Recordset2 запись не гарантирует, что запись будет иметь одинаковое абсолютное положение, так как порядок отдельных записей в объекте Recordset не гарантируется, если он не создан с помощью инструкции SQL с помощью предложения ORDER BY.

Примечание.

  • Установка свойства AbsolutePosition значения больше нуля для только что открытого, но не заполненного объекта Recordset2 приводит к перехватываемой ошибке. Сначала заполните объект Recordset2 методом MoveLast .
  • Свойство AbsolutePosition недоступно для объектов Recordset2 прямого типа или объектов Recordset2 , открытых из сквозных запросов к базам данных ODBC, подключенным к ядру СУБД Microsoft Access.

Пример

В этом примере свойство AbsolutePosition используется для отслеживания хода выполнения цикла, который перечисляет все записи Recordset2.

    Sub AbsolutePositionX() 
     
       Dim dbsNorthwind As Database 
       Dim rstEmployees As Recordset2 
       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