Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭКТ / БДлаб7.doc
Скачиваний:
18
Добавлен:
16.04.2013
Размер:
478.21 Кб
Скачать

Значения свойств компонентов DataSource

Свойство

DataSource1

DataSource2

DataSource3

Name

dsPERSON

dsHAVE_D

dsFLAT

DataSet

taPERSON

taHAVE_D

taFLAT

С помощью редактора полей для каждого компонента Table следует сформировать набор полей, используя ранее описанную последовательность действий. Для таблиц taFLAT, taTPHONE и taPROFIT набор полей совпадает с перечнем полей (атрибутов) для находящейся в базе данных на диске таблицы с именем TableName, которая связана с компонентом Table.

Для таблицы taPERSON в набор полей включаются все поля, имеющиеся в таблице (файле) PERSON.DB, и одно вычисляемое поле Ntel типа String для хранения номера телефона, установленного в квартире. Для вычисления значения этого поля необходимо предусмотреть процедуру обработки события OnCalcFields для таблицы taPERSON. Текст этой процедуры, имя которой формируется автоматически системой Delphi, приведен на листинге 8. Значение вычисляемого поля Ntel таблицы taPERSON в процедуре обозначается как taPERSONNtel.Value.

Листинг 8. Процедура определения номера телефона

procedure TfmEDITPERS.taPERSONCalcFields

(DataSet : TDataset);

begin

with taTPHONE do {Найти номер телефона по адресу}

begin

Open;

IndexName := 'Adr'; {Задать вторичный индекс}

First;

SetKey;

FieldByName('Adr').AsString :=

taPERSON.FieldByName('Adr').AsString;

if GotoKey then {Запись найдена по ключу}

taPERSONNtel.Value := FieldByName('Ntel').AsString

else {Запись не найдена}

taPERSONNtel.Value := '';

end;

end;

Для таблицы taHAVE_D в набор полей включаются все поля, имеющиеся в таблице (файле) HAVE_D.DB, и два вычисляемых поля: Source типа String с названием источника дохода и Size типа Currency с размером дохода. Для вычисления значений этих полей необходимо предусмотреть процедуру обработки события OnCalcFields для таблицы taHAVE_D. Текст этой процедуры taHAVE_DCalcFields приведен на листинге 9. Значения вычисляемых полей отыскиваются в таблице taPROFIT по идентификатору вида дохода Id.

Листинг 9. Процедура вычисления полей Source и Size таблицы taHAVE_D

procedure TfmEDITPERS.taHAVE_DCalcFields(DataSet: TDataset);

begin

with taPROFIT do

begin

DisableControls; Open; First; SetKey;

FieldByName('Id').AsInteger :=

fmEDITPERS.taHAVE_D.FieldByName('Id').AsInteger;

GotoKey; {Поиск записи по ключу}

EnableControls;

end;

taHAVE_DSource.Value := taPROFITSource.Value;

taHAVE_DSize.Value := taPROFITMoneys.Value;

end;

Данные из таблицы taHAVE_D отображаются в компоненте grHAVE_D. Чтобы на экране были видны значения только полей Source, Size и Comment с соответствующими заголовками Источник, Размер, Пояснение, значения свойств полей в сформированном наборе должны быть установлены согласно табл.10.

Значения свойств, общих для визуальных компонентов, управляющих данными, задаются в соответствии с табл.11. Для компонента dcPol дополнительно устанавливается значение свойства Items, содержащего допустимое обозначение пола, которое помещается в поле Pol таблицы taPERSON. Действия по установке значения свойства Items были описаны при создании формы fmEDITFLAT. Для компонента deSumD дополнительно задается значение свойства ReadOnly=True, чтобы запретить запись общего дохода с помощью клавиатуры, поскольку целесообразно общий доход вычислять автоматически на основе данных, имеющихся в таблицах taHAVE_D и taPROFIT.

Таблица 10

Соседние файлы в папке ЭКТ