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


Метод Recordset.Move (DAO)

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

Перемещает положение текущей записи в объекте Recordset.

Синтаксис

expression . Move(Rows, StartBookmark)

expression: переменная, представляющая объект Recordset.

Параметры

Имя

Обязательный/необязательный

Тип данных

Описание

Rows

Обязательный

Long

Количество строк, на которое сдвинется положение. Если значение rows больше 0, то положение смещается вперед (к концу файла). Если оно меньше 0, то положение смещается назад (к началу файла).

StartBookmark

Необязательный

Variant

Значение, определяющее закладку. Если указать значение startbookmark, смещение начнется относительно закладки. В противном случае оно начнется с текущей записи.

Примечания

Если с помощью метода Move поместить указатель текущей записи перед первой записью, то указатель текущей записи переместится в начало файла. Если объект Recordset не содержит записей, а для его свойства BOF задано значение True, то при попытке использовать этот метод для перемещения назад возникнет ошибка.

Если с помощью метода Move поместить указатель текущей записи после последней записи, то указатель текущей записи переместится в конец файла. Если объект Recordset не содержит записей, а для его свойства EOF задано значение True, то при попытке использовать этот метод для перемещения вперед возникнет ошибка.

Если для свойства BOF или EOF задано значение True, а вы попытаетесь использовать метод Move без действительной закладки, возникнет ошибка во время выполнения.

Примечание.

  • Если использовать метод Move для однонаправленного объекта Recordset, значение аргумента rows должно быть положительным целым числом, а использование закладок не допускается. Это означает, что перемещать запись можно только вперед.
  • Чтобы сделать первую, последнюю, следующую или предыдущую запись в объекте Recordset текущей, используйте метод MoveFirst, MoveLast, MoveNext или MovePrevious.
  • Используя метод Move и задав для аргумента rows значение 0, можно легко получить базовые данные для текущей записи. Это полезно, если вы хотите убедиться, что текущая запись содержит наиболее актуальные данные из базовых таблиц. При этом также будут отменены все ожидающие обработки вызовы методов Edit и AddNew.

Пример

В этом примере с помощью метода Move указатель перемещается в соответствии с вводимыми пользователем данными.

    Sub MoveX() 
     
       Dim dbsNorthwind As Database 
       Dim rstSuppliers As Recordset 
       Dim varBookmark As Variant 
       Dim strCommand As String 
       Dim lngMove As Long 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
       Set rstSuppliers = _ 
          dbsNorthwind.OpenRecordset("SELECT CompanyName, " & _ 
          "City, Country FROM Suppliers ORDER BY CompanyName", _ 
          dbOpenDynaset) 
     
       With rstSuppliers 
          ' Populate recordset. 
          .MoveLast 
          .MoveFirst 
     
          Do While True 
             ' Display information about current record and ask  
             ' how many records to move. 
             strCommand = InputBox( _ 
                "Record " & (.AbsolutePosition + 1) & " of " & _ 
                .RecordCount & vbCr & "Company: " & _ 
                !CompanyName & vbCr & "Location: " & !City & _ 
                ", " & !Country & vbCr & vbCr & _ 
                "Enter number of records to Move " & _ 
                "(positive or negative).") 
     
             If strCommand = "" Then Exit Do 
     
             ' Store bookmark in case the Move doesn't work. 
             varBookmark = .Bookmark 
     
             ' Move method requires parameter of data type Long. 
             lngMove = CLng(strCommand) 
             .Move lngMove 
     
             ' Trap for BOF or EOF. 
             If .BOF Then 
                MsgBox "Too far backward! " & _ 
                   "Returning to current record." 
                .Bookmark = varBookmark 
             End If 
             If .EOF Then 
                MsgBox "Too far forward! " & _ 
                   "Returning to current record." 
                .Bookmark = varBookmark 
             End If 
          Loop 
          .Close 
       End With 
     
       dbsNorthwind.Close 
     
    End Sub