Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Событие OnFilterRecord возникает, когда в свойстве filtered устанавливается значение True. Метод-обработчик события TFilterRecordErent имеет два параметра. В параметре DataSet передается фильтруемый набор данных, а в параметре Accept - переменная, в которую помещается значение True в случае, если текущая запись соответствует условиям фильтрации. Пример приведен в листинге 2.6.

 

Листинг 2.6. Пример использования события OnFilterRecord

procedure TForml.TablelFilterRecord(DataSet: TDataSet;
var Accept: Boolean):
begin
Accept:=((DataSet.FieldByName('Size').AsInteger+2)<10)
and ((DataSet.FieidByNameC'Weight').AsFloat/2)<2);
end;

В современных условиях практически все операции выборки, сортировки, поиска осуществляются средствами SQL.

 

Состояния набора данных
Набор данных может находиться в нескольких состояниях, в которые он переходит в процессе своего функционирования, Состояния меняются в результате перемещения по набору данных, редактирования, ввода новых записей и т. д. Отслеживая текущее состояние набора данных, программист может предпринять какие-либо действия. Текущее состояние набора данных содержится в свойстве State, значение которого принадлежит перечислимому типу TOataSetState. Возможные состояния указаны в табл. 2.1.

 

Таблица 2.1. Состояния набора данных

Значение свойства

Состояние набора данных

dslnactive

Набор данных закрыт

dsBrowse

Набор данных находится в состоянии просмотра.
Редактирование невозможно. Данное состояние является
«обычным», устанавливается по умолчанию

dsEdit

Выбранная запись может быть отредактирована

dslnsert

Запись «помещена» в набор, но не утверждена в нем методом
Post. Запись может быть изменена, принята или отменена

dsSetKey

Используется механизм поиска по ключу
или по диапазонам

dsCalcFields

Устанавливается при возникновении события OnCalcFields

dsFilter

Устанавливается при возникновении события
OnFilterRecord

dsNewValue

Устанавливается при обращении к свойству NewValue поля
набора данных

dsOldValue

Устанавливается при обращении к свойству OldValue поля
набора данных

dsCurValue

Устанавливается при обращении к свойству CurValue поля
набора данных

dsBlockRead

Устанавливается в случае «ускоренного перемещения по
набору данных». Переводится в данный режим вызовом
метода DisableControls

dsInternalCalc

Устанавливается при расчете значений полей, для которых
FieldKind имеет значение fklnternalCalc

dsOpening

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

 

 

Набор данных может переходить в состояния dsNewValue, dsOldValue, dsCurValue, dsInternalCalc только в том случае, когда доступ к базе данных осуществляется через компонент TClientDataSet или используется кэш данных.

Когда набор открывается, ои находится в состоянии dsOpening. После того как он открылся, активируется состояние просмотра dsBrowse. Это состояние является основным для набора данных.

В листинге 2.7 приведен пример, в котором производится проверка того, находится ли набор данных в состоянии редактирования или вставки новой записи, после этого выполняется сохранение изменений.

 

Листинг 2.7. Демонстрация использования сведений о состоянии набора данных
with DataSet do begin
if state in [dslnsert. dsEdit] then
Post:
end;



   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru