Шаг 123 - Метод Move

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

наборЗаписей.Move строки, начало

Параметры
наборЗаписей
Объектная переменная, представляющая объект Recordset, в котором изменяется положение указателя текущей записи.
строки
Значение типа Long со знаком, указывающее число строк, на которое перемещается указатель текущей записи. Если значение аргумента строки больше 0, то осуществляется перемещение вперед (по направлению к концу файла). При отрицательных значениях аргумента строки осуществляется перемещение назад (по направлению к началу файла).
начало
Необязательный. Значение типа Variant (подтип String), определяющее закладку. Если задан аргумент начало, то перемещение начнется с записи, на которую указывает закладка. В противном случае метод Move начинает перемещение с текущей записи.

Замечания
Если значения аргументов метода Move задают перемещение указателя текущей записи в положение, находящееся перед первой записью набора, то указатель текущей записи будет помещен в начало файла. Если объект Recordset не содержит записей и свойство BOF объекта имеет значение True, то вызов данного метода для перемещения назад вызывает ошибку.
Если заданные значения аргументов метода Move должны вызвать перемещение указателя текущей записи в положение, находящееся после последней записи набора, то указатель текущей записи будет помещен в положение конца файла. Если объект Recordset не содержит записей и свойство EOF объекта имеет значение True, то вызов данного метода для перемещения вперед вызывает ошибку.
Ошибка выполнения возникает также при попытке вызова метода Move без допустимой закладки, в то время как любое из свойств BOF или EOF имеет значении True.
При вызове метода Move для объекта Recordset типа статического набора записей с последовательным доступом аргумент строки должен иметь положительное целое значение, а использование закладок не допускается. В этом случае перемещение может проводиться только по направлению к концу набора.
Для того чтобы сделать текущей первую, последнюю, следующую или предыдущую запись объекта Recordset, следует применить, соответственно, методы MoveFirst, MoveLast, MoveNext или MovePrevious.
Вызов метода Move с нулевым значением аргумента строки является удобным способом загрузки значений из базового источника данных в текущую запись. Это позволяет быть уверенным в том, что запись содержит последние данные из базовых таблиц. При этом также отменяются любые отложенные вызовы методов 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("Борей.mdb")
	Set rstSuppliers = dbsNorthwind.OpenRecordset("SELECT Название, " & "Город, Страна FROM Поставщики ORDER BY Название", 	dbOpenDynaset)
	With rstSuppliers
		' Заполняет набор записей.
		.MoveLast
		.MoveFirst
		Do While True
		' Отображает сведения о текущей записи и запрашивает, 
		' на какое количество записей следует сдвинуться.
			strCommand = InputBox( 	"Запись № " & (.AbsolutePosition + 1) & " из " &  .RecordCount & vbCr & "Компания: " & _
				!Название & vbCr & "Место: " & !Город & ", " & !Страна & vbCr & vbCr & _
				"Введите число записей для перемещения " & "(положительное или отрицательное).")
			If strCommand = "" Then Exit Do
			' Сохраняет закладку на случай ошибки метода Move.
			varBookmark = .Bookmark
			' Методу Move требуется параметр с типом данных Long.
			lngMove = CLng(strCommand)
			.Move lngMove
			' Перехват меток BOF или EOF.
			If .BOF Then
				MsgBox "Слишком далеко назад! " & "Возвращаюсь на текущую запись."
				.Bookmark = varBookmark
			End If
			If .EOF Then
				MsgBox "Слишком далеко вперед! " & "Возвращаюсь на текущую запись."
				.Bookmark = varBookmark
			End If
		Loop
		.Close
	End With
	dbsNorthwind.Close

End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 24.03.2002