Редактирование набора данных

Класс TDataSet содержит ряд свойств и методов, которые обеспечивают редактирование набора данных.

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

property CanModify: Boolean;

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

procedure Edit;

Для сохранения сделанных изменений применяется метод

procedure Post; virtual;

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

При необходимости все сделанные после последнего вызова метода Post изменения можно отменить методом

procedure Cancel; virtual;

Новая пустая запись добавляется в конец набора данных методом

procedure Append;

Новая пустая запись добавляется на место текущей методом

procedure Insert;

а текущая запись и все нижеследующие смещаются на одну позицию вниз.

Внимание

 

При использовании методов Append и insert набор данных переходит в режим редактирования самостоятельно.

Текущая запись удаляется методом

procedure Delete;

При этом набор данных не выдает никаких предупреждений, а просто делает это.

Очистить содержимое всех полей текущей записи может метод

procedure ClearFields;

Обратите внимание, что поля становятся пустыми (NULL), а не сбрасываются в нулевое значение.

 

О том, редактировалась ли текущая запись, сообщает свойство

property Modified: Boolean;

если оно имеет значение True, значит, запись редактировалась.

Обработчики событий набора данных

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

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

- открытие и закрытие набора данных;

- переход в режим редактирования;

- переход в режим вставки новой записи;

- сохранение сделанных изменений;

- отмена сделанных изменений;

- перемещение по записям набора данных;

- обновление набора данных.

Примеры написания обработчиков см. в разделе ……

Компонент TIBQuery

Компоненты InterBase Express используют для получения набора данных собственный механизм, иерархия классов-предков включает только обязательный для всех наборов данных TDataSet класс TiBCustomDataSet, который, собственно, и инкапсулирует механизм доступа InterBase Express.

Компонент запроса TIBQuery является наиболее часто используемым компонентом доступа к данным. Компонент TIBQuery выполняет все стандартные функции компонента запроса и наследует возможности класса TiBCustomDataSet.

Для связи с базой данных TIBQuery (как и прочие компоненты InterBase Express) применяет компонент соединения TiBDatabase (см. выше). Для этого он используют свойство

property Database: TiBDatabase;

Доступ к связанной транзакции осуществляется через свойство

property Transaction: TIBTransaction;

Как и у остальных компонентов запросов, свойство

property SQL: TStrings;

содержит текст запроса и позволяет редактировать его. С этим свойством связан специализированный редактор, открывающийся при щелчке на кнопке свойства в Инспекторе объектов.

 

Выполнение запроса возможно двумя способами.

Если запрос возвращает результат в набор данных, то применяется метод

procedure Open;

или свойство

property Active: Boolean;

которому присваивается значение True. После выполнения запроса открывается набор данных компонента. Закрывается такой запрос методом

procedure Close;

или тем же свойством Active.

Если запрос не возвращает результат в набор данных (например, использует операторы INSERT, DELETE, UPDATE), то используется метод

procedure ExecSQL;

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

Попытка использовать для такого запроса метод Open или свойство Active приведет к ошибке

Часто запросы имеют настраиваемые параметры, значения которых определяются непосредственно перед выполнением запроса.

 

Свойство

property Params: TParams;

представляет собой список объектов TParams, каждый из которых содержит настройки одного параметра. Свойство Params обновляется автоматически при изменении текста запроса. Свойство Params представляет собой набор изменяемых параметров запроса или хранимой процедуры, а также набор объектов TParam, инкапсулирующих отдельные параметры. (Подробно использование свойства Params рассмотрено в разделе …)