Режимы наборов данных

В примере использования события BeforeClose мы упомянули о режиме набора данных (свойстве State). Остановимся на этом немного подробнее. Наборы данных в разные моменты времени могут находиться в различных режимах, например неактивном, фильтрации данных, вставки, редактирования и т. д. Программист может читать значение свойства State, но изменять его напрямую нельзя. Для того чтобы перевести набор данных в один из режимов, нужно либо вызвать соответствующий метод, либо воспользоваться адекватными визуальными компонентами, речь о которых пойдет ниже.

Перечислим возможные режимы, в которых может находиться набор данных. Их всего тринадцать:

 dsInactive — неактивный. В этом режиме набор данных является закрытым и доступ к данным невозможен;

 dsBrowse — режим просмотра. Данный режим устанавливается по умолчанию для любого открытого набора данных. В этом режиме данные могут свободно просматриваться, но никаких изменений в них внести нельзя;

 dsEdit — режим редактирования. В этом режиме возможно только редактирование текущей (активной) записи набора данных;

 dsInsert — режим вставки. В данном состоянии активной является новая запись, которую можно редактировать, а затем либо принять изменения (post) либо отменить их (discard);

 dsSetKey — режим поиска, который доступен только для компонентов Table и ClientDataSet. В этом режиме происходит отбор записей, которые соответствуют некоторому критерию. Можно просматривать ограниченный набор данных (соответствующих критерию), но нельзя их редактировать или вставлять новые записи;

 dsCalcFields — расчет вычисляемых полей, в процессе которого невычисляемые поля таблицы не могут быть отредактированы и нельзя вставлять новые записи. Этот режим использует событие OnCalcFields;

 dsFilter — режим фильтра. В этом режиме показываются только те данные, которые соответствуют фильтру, при этом невозможно редактировать или вставлять записи. Режим использует событие OnFilterRecord;

 dsNewValue — режим доступа к свойству NewValue. Данный режим является временным;

 dsOldValue — режим доступа к свойству OldValue. Также является временным;

 dsCurValue — режим доступа к свойству CurValue. Как и предыдущие, временный режим;

 dsBlockRead — режим чтения блока данных. В этом режиме при переходе на следующую запись набора данных (при вызове метода Next) все визуальные компоненты, отображающие данные, не обновляются и не происходят никакие события;

 dsInternalCalc — режим внутренних вычислений. Временный режим, в нем значения полей, свойство TField.FieldKind которых установлено в fkInternalCalc, вычисляются;

 dsOpening — режим открытия набора данных. Подразумевает состояние еще не завершенного открытия набора данных. Этот режим активируется, когда набор данных открывается для асинхронной выборки.