Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование БД в Delphi ВТиП.doc
Скачиваний:
53
Добавлен:
17.03.2016
Размер:
3.62 Mб
Скачать
      1. Вычисляемые поля

Вычисляемые поля не входят в состав конкретной таблицы физической БД, но могут быть присоединены к НД, связанному с этой таблицей. Эти поля могут быть присоединены к НД типа TTable и TQuery.

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

Для создания вычисляемого поля нужно открыть окно New Field (см. рисунок 3.25) редактора полей и, заполнив строки Name, Type и Size, установить переключатель Calculated и закрыть окно щелчком на кнопке ОК. Заполнение вычисляемых полей осуществляется в обработчике события OnCalcFields соответствующего НД.

Рассмотрим пример создания вычисляемого поля. В разработанной ранее программе используется таблица MOVEBOOK (НД tbMove) для отображения списка книг, связанных с накладной. В этой таблице есть поля, в которых указывается количество экземпляров книги MQuan (объект-поле tbMoveMQuan) и ее цена MPrice (объект-поле tbMoveMPrice). Создадим для НД tbMove вычисляемое поле MSumm, в котором укажем сумму покупки/продажи каждой книги.

Рисунок 3.39 –Столбец "Сумма" в нижней сетке отображает вычисляемое поле

Вызовите редактор объектов-полей двойным щелчком на НД tbMove в окне модуля данных и затем в контекстном меню редактора выберите команду New Field. Введите в строку Name окна New Field название поля MSumm, в списке Туре выберите денежный тип (currency), установите переключатель Calculated и закройте окно щелчком на кнопке ОК. Если сейчас вызвать инспектор объектов, он будет отображать свойства и события вновь созданного объекта-поля tbMoveSumm.

Нам нужны свойства и события НД tbMove. Щелкните на НД tbMove, чтобы инспектор объектов показал свойства этого НД. Перейдите на вкладку Events.

Дважды щелкнув в правой части строки события OnCalcFields.

Рисунок 3.40 –

Delphi cоздаст в модуле dmNaklsU заготовку для обработчика событий OnCalcFields. Напишите в ней такой обработчик события OnCalcFields:

procedure TDM.tbMoveCalcFields(DataSet: TDataSet);

begin

tbMoveSumma.Value := tbMoveMQuan.Value * tbMoveMPrice.Value;

end;

Чтобы увидеть в сетке DBGrid2 столбец со значениями нового поля MSumma, создайте для него новый объект-столбец - специальный компонент, облегчающих управление отображением данных (см. подраздел 3.5).

    1. Обработчики событий компонент работы с бд

С компонентами по работе с БД связано большое количество обработчиков событий. Для таких компонент как TDatabase, TTable и TQuery они связаны с бизнес-правилами (бизнес-логикой). Разработка бизнес-правил рассматривается ниже. К таким обработчикам событий, например, относятся AfterDelete или BeforDelete.

Для компонента визуализации данных TDBGrid обработчики событий связаны с заголовками и содержимым объектов-столбцов. К таким обработчикам событий, например, относятся OnGetText или OnSetText.

Ниже рассматривается пример создания обработчика событий OnGetText для компонента визуализации данных TDBGrid.