Иллюстрированный самоучитель по Delphi 7 для профессионалов

Абстрактный набор данных

Набор данных можно обновить, не закрывая и не открывая его снова. Для этого применяется метод:

procedure Refresh;

Однако он сработает только для таблиц и тех запросов, которые нельзя редактировать.

В каждый момент времени набор данных находится в определенном состоянии (о состояниях см. ниже в этой главе). Свойство:

type TDataSetState = (dslnactive, dsBrowse, dsEdit, dslnsert, dsSetKey, dsCalcFields,
 dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc, dsOpening);
 property State: TDataSetState;

Дает информацию о текущем состоянии набора.

Методы-обработчики класса TDataSet предоставляют разработчику широчайшие возможности по отслеживанию событий, происходящих с набором данных.

По паре методов-обработчиков (до и после события) предусмотрено для следующих событий в наборе данных:

  • открытие и закрытие набора данных;
  • переход в режим редактирования;
  • переход в режим вставки новой записи;
  • сохранение сделанных изменений;
  • отмена сделанных изменений;
  • перемещение по записям набора данных;
  • обновление набора данных.

Обратите внимание, что помимо методов-обработчиков режима вставки существует дополнительный метод:

property OnNewRecord: TDataSetNotifyEvent;

Который вызывается непосредственно при вставке или добавлении записи. Дополнительно к этому могут использоваться методы-обработчики возникающих ошибок. Они предусмотрены для ошибок удаления, редактирования и сохранения изменений.

Метод-обработчик:

property OnCalcFields: TDataSetNotifyEvent;

Очень важен для задания значений вычисляемых полей. Он вызывается для каждой записи, которая отображается в визуальных компонентах, связанных с набором данных каждый раз, когда необходимо перерисовать значения полей в визуальных компонентах.

Если в методе-обработчике OnCalcFields производятся слишком сложные вычисления, частота его вызовов может быть уменьшена за счет свойства:

property AutoCalcFields: Boolean;

По умолчанию оно равно значению True и расчет вычисляемых полей производится при каждой перерисовке. При значении False метод-обработчик OnCalcFields вызывается только при открытии, переходе в состояние редактирования и обновлении набора данных. Все перечисленные выше обработчики имеют одинаковый тип:

type TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

И метод-обработчик:

type TFilterRecordEvent = procedure(DataSet: TDataSet;
var Accept: Boolean) of object;
property OnFilterRecord: TFilterRecordEvent;

Вызывается для каждой записи набора данных при свойстве Filtered = True. (Подробнее об этих свойствах и методе-обработчике см. гл. 14.) Помимо перечисленных, класс TDataSet содержит еще много свойств и методов, которые обеспечивают работоспособность многих полезных в практическом программировании приложений баз данных функций. Подробно они рассмотрены в гл. 14.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.