Описание
BOF - возвращает значение, показывающее, расположен ли указатель текущей записи в позиции перед первой записью объекта Recordset.
EOF - возвращает значение, показывающее, расположен ли указатель текущей записи в позиции после последней записи объекта Recordset.
Значение
Возвращаемые значения свойств BOF и EOF имеют тип данных Boolean.
Свойство BOF возвращает значение True, если указатель текущей записи расположен перед первой записью набора записей, и значение False, если указатель текущей записи расположен на первой записи набора или на любой записи после нее.
Свойство EOF возвращает значение True, если указатель текущей записи расположен после последней записи набора, и значение False, если указатель текущей записи расположен на последней записи набора или на любой записи перед ней.
Замечания
Свойства BOF и EOF используют для проверки наличия записей в объекте Recordset, а также для сообщения о выходе за пределы объекта при перемещении от записи к записи.
Возвращаемые значения свойств BOF и EOF определяются положением указателя текущей записи.
Если любое из свойств BOF или EOF имеет значение True, текущая запись не определена.
При открытии объекта Recordset, не содержащего ни одной записи, оба свойства BOF и EOF получают значение True, а свойство набора записей RecordCount (число записей) получает значение 0. При открытии объекта Recordset, который содержит хотя бы одну запись, первая запись набора становится текущей записью, а свойства BOF и EOF получают значения False. Данные свойства сохраняют значения False до тех пор, пока указатель текущей записи не переместится за пределы начала или конца набора записей при использовании, соответственно, методов MovePrevious или MoveNext, соответственно. После выхода за пределы набора записей текущая запись становится неопределенной.
После удаления последней оставшейся записи объекта Recordset свойства BOF и EOF могут сохранять значение False до тех пор, пока не будет предпринята попытка изменить положение указателя текущей записи.
При вызове метода MoveLast для объекта Recordset, содержащего записи, текущей записью становится последняя запись набора. Если после этого вызвать метод MoveNext, то текущая запись становится неопределенной, а свойство EOF получает значение True. Аналогично, при вызове метода MoveFirst для непустого объекта Recordset текущей записью становится первая запись набора. Последующий вызов метода MovePrevious приводит к тому, что текущая запись становится неопределенной, а свойство BOF получает значение True.>br>
Как правило, при работе со всеми записями из объекта Recordset в программе задают перемещение в цикле по записям с помощью метода MoveNext до тех пор, пока свойство EOF не получит значение True.
Вызов метода MoveNext или MovePrevious, когда, соответственно, свойство EOF или BOF имеет значение True, приводит к возникновению ошибки.
В следующей таблице показано, какие из методов группы Move можно применять при различных комбинациях значений свойств BOF и EOF.
MoveFirst, MovePrevious, MoveNext, MoveLast Move < 0 Move 0 Move > 0 BOF=True, EOF=False Допускается Ошибка Ошибка Допускается BOF=False, EOF=True Допускается Допускается Ошибка Ошибка Оба True Ошибка Ошибка Ошибка Ошибка Оба False Допускается Допускается Допускается Допускается
Допустимость применения метода из группы Move еще не означает, что метод обязательно обнаружит запись. Это просто означает, что попытка выполнить указанный метод Move является допустимой и не приведет к ошибке. В результате вызова метода из группы Move состояние свойств BOF и EOF может измениться.
При вызове метода OpenRecordset неявно выполняется метод MoveFirst. Таким образом, в результате вызове метода OpenRecordset для пустого набора записей свойства BOF и EOF получают значение True. (Результаты неудачной попытки выполнить метод MoveFirst представлены в приведенной ниже таблице).
Все методы группы Move, в которых успешно обнаруживается запись, задают для свойств BOF и EOF значение False.
В рабочей области Microsoft Jet при добавлении записи в пустой объект Recordset, свойство BOF получает значение False, а свойство EOF сохраняет значение True, указывающее, что позиция текущей записи находится в конце объекта Recordset. В рабочей области ODBCDirect оба свойства BOF и EOF получают значение False, указывающее, что позиция текущей записи находится на новой записи.
Любой вызов метода Delete, даже приводящий к удалению последней записи из набора записей, не изменяет значения свойств BOF и EOF.
Результаты для свойств BOF и EOF вызова одного из методов Move, не приведшего к обнаружению записи, представлены в следующей таблице.
BOF EOF MoveFirst, MoveLast True True Move 0 Без изменений Без изменений MovePrevious, Move < 0 True Без изменений MoveNext, Move > 0 Без изменений True
Пример
Следующая программа демонстрирует использование свойств BOF и EOF для перемещения назад и вперед по объекту Recordset.
Sub BOFX() Dim dbsNorthwind As Database Dim rstCategories As Recordset Dim strMessage As String Set dbsNorthwind = OpenDatabase("Борей.mdb") Set rstCategories = dbsNorthwind.OpenRecordset("Типы", dbOpenSnapshot) With rstCategories ' Заполняет объект Recordset. .MoveLast .MoveFirst Do While True ' Отображает сведения о текущей записи ' и принимает данные от пользователя. strMessage = "Категория: " & !Категория & vbCr & "(запись " & (.AbsolutePosition + 1) & _ " из " & .RecordCount & ")" & vbCr & vbCr & "1 - вперед, 2 - назад" ' Переход вперед или назад и перехват меток BOF или EOF. Select Case InputBox(strMessage) Case 1 .MoveNext If .EOF Then MsgBox "Конец файла!" & vbCr & "Указатель передвинут на последнюю запись." .MoveLast End If Case 2 .MovePrevious If .BOF Then MsgBox "Начало файла!" & vbCr & "Указатель передвинут на первую запись." .MoveFirst End If Case Else Exit Do End Select Loop .Close End With dbsNorthwind.Close End Sub