10. Переход на запись
Для перехода на определенную запись используются следующие методы:
MoveFirst, MoveLast, MoveNext, MovePrior
– переход соответственно на первую, последнюю, следующую, предыдущую записи.MoveBy(Distance: Integer)
– перемещение на Distance записей вперед или назад (если значение отрицательное.MoveTo(RecNo: Integer)
– переход на запись под номером RecNo.GotoRecord(RecId: Integer)
– переход на запись сId = RecId
.Locate(const FieldNames: String; FieldValues: array of Variant; Options: TLocateOptions)
– переход на запись с определенными значениями полей.- FieldNames - имена полей, разделенные точкой с запятой;
- FieldValues - массив значений; значения должны соответствовать перечисленным в первом параметре полям;
- Options – опции поиска:
- loCaseInsensitive – поиск без учета регистра,
- loPartialKey – искать фрагмент текста.
Во время перехода возникают следующие события:
- OnBeforeScroll – событие до перехода на запись,
- OnAfterScroll – событие после перехода на запись. Если запись находится в состоянии вставки/изменения, то перед переходом запись сохраняется, т. е. неявно вызывается метод Post.
BoF и EoF
С методами перехода связаны еще два метода, которые также используются при перемещении – это BOF и EOF. BOF возвращает True, если достигнуто начало набора данных. EOF возвращает True, если достигнут конец набора данных.
Self.DisableControls; Self.DisableScrollEvents; Self.MoveFirst; while not Self.Eof do begin // Выполняем какие-то действия … Self.MoveNext; end; Self.EnableControls; Self.EnableScrollEvents;
DisableControls, EnableControls, DisableScrollEvents, EnableScrollEvents
Пример показывает прохождение по всем записям формы. Для ускорения обработки отключается связь визуальных компонентов с набором данных (DisableControls), а также отключается реакция на события OnBeforeScroll и OnAfterScroll (DisableScrollEvents), в том числе штатная обработка (обновление подчиненных форм, запросов, вычисление надписей и т. д.). После обработки данных связь нужно включить (EnableControls, EnableScrollEvents).