Шаг 87 - Свойство AbsolutePosition

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

Значение
Задаваемые и возвращаемые значения являются целыми числами (типа Long) в диапазоне от 0 до значения, меньшего полного числа записей в объекте Recordset. Это значение соответствует позиции текущей записи в объекте Recordset.

Замечания
Свойство AbsolutePosition позволяет установить указатель текущей записи на запись, занимающую определенную позицию в динамическом или статическом объекте Recordset. Кроме того, считывая значение свойства AbsolutePosition, можно определить положение текущей записи.
Поскольку нумерация записей в свойстве AbsolutePosition начинается с нуля (0 соответствует первой записи в наборе записей), нельзя задать значение этого свойства, равное или превышающее полное число записей в наборе; такая попытка приведет к возникновению перехватываемой ошибки. Для того чтобы найти полное число записей в наборе, следует проверить значение свойства RecordCount. Максимальное допустимое значение свойства AbsolutePosition равняется RecordCount - 1.
Если текущая запись не определена, а также при отсутствии записей в объекте Recordset, свойство AbsolutePosition возвращает значение –1. При удалении текущей записи значение свойства AbsolutePosition становится неопределенным, и ссылка на значение этого свойства приводит к возникновению перехватываемой ошибки. Новые записи добавляются в конец набора записей.
Данное свойство не предназначено для использования в качестве заменителя номера записи. Для фиксации текущей позиции в наборе и для возвращения в эту позицию рекомендуется использовать закладки. Закладка также предоставляет единственный способ размещения текущей записи в объекте Recordset любого типа. В частности, положение конкретной записи изменяется при удалении одной или нескольких предшествующих записей. Кроме того, нет гарантий, что конкретная запись займет то же положение при новом открытии объекта Recordset, если только этот набор не будет создан с помощью инструкции SQL с предложением ORDER BY.
Попытка задать превышающее нуль значение свойства AbsolutePosition для только что открытого и еще не заполненного объекта Recordset приводит к возникновению перехватываемой ошибки. Предварительно необходимо заполнить объект Recordset с помощью метода MoveLast.
Свойство AbsolutePosition недоступно для объектов Recordset типа статического набора записей с последовательным доступом или для объектов Recordset, открытых с помощью запросов к серверу для баз данных ODBC, подключенных к ядру Microsoft Jet.

Пример
Следующая программа использует свойство AbsolutePosition для контроля за выполнением цикла по всем записям объекта Recordset.

Sub AbsolutePositionX()

	Dim dbsNorthwind As Database
	Dim rstEmployees As Recordset
	Dim strMessage As String

	Set dbsNorthwind = OpenDatabase("Борей.mdb")
	' Свойство AbsolutePosition применимо только 
	' к динамическим и статическим наборам записей.
	Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники", dbOpenSnapshot)

	With rstEmployees
		' Заполняет объект Recordset.
		.MoveLast
		.MoveFirst
		' Цикл по всем компонентам объекта Recordset.

	Do While Not .EOF
			' Отображает сведения о текущей записи. Прибавляет 1 
			' к значению AbsolutePosition, поскольку значения 
			' этого свойства отсчитываются от нуля.
			strMessage = "Сотрудник: " & !Фамилия & vbCr & 	"(запись " & (.AbsolutePosition + 1) & 	" из " & .RecordCount & ")"
			If MsgBox(strMessage, vbOKCancel) = vbCancel 	Then Exit Do
			.MoveNext
		Loop
		.Close
	End With
	dbsNorthwind.Close

End Sub

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