В процессе своего функционирования (от открытия методом Open и до закрытия методом close) набор данных может выполнять самые разнообразные операции. Можно просто перемещаться по записям, можно редактировать данные и удалять записи, можно проводить поиск по различным параметрам и т. д. При этом желательно, чтобы все операции выполнялись как можно быстрее и эффективнее.
Набор данных в любой момент времени находится в некотором состоянии, т. е. подготовлен к выполнению действий строго определенного рода. И для каждой группы операций набор данных выполняет ряд подготовительных действий.
Все состояния набора данных делятся на две группы.
Базовый класс TDataSet, инкапсулирующий свойства набора данных, позволяет изменять состояние, а также проверять текущее состояние набора данных.
Текущее состояние набора данных передается в свойство state, имеющее тип TDataSetState:
type TDataSetState = (dslnactive, dsBrowse, dsEdit, dslnsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc);
Для управления состояниями набора данных используются методы open, Close, Edit, Insert.
Таблица 12.1. Автоматические состояния набора данных
Константа состояния |
Описание |
dsNewValue |
Включается при обращении к свойству NewValue поля набора данных |
dsOldValue |
Включается при обращении к свойству OldValue поля набора данных |
dsCurValue |
Включается при обращении к свойству CurValue поля набора данных |
dsInternalCalc |
Включается при расчете значений полей, для которых FindKind = fklnternalCalc |
dsCalcFields |
Включается при выполнении метода onCalcFields |
dsBlockRead |
Включается механизм ускоренного перемещения по набору данных |
dsOpening |
Существует при открытии набора данных методом Open или свойством Active |
dsFilter |
Включается при выполнении метода OnFilterRecord |