Метод 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