Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_проект_ИС.doc
Скачиваний:
18
Добавлен:
11.08.2019
Размер:
3.38 Mб
Скачать

4.5. Создание объектов-столбцов

После того как мы создали подстановочные поля для НД Naklad и Snakl, Plateg и Splat, связанные с ними ключевые поля NZKod и SnIKod, PZKod и SpIKod стали лишними – не имеет смысла рядом с названием заказчика или изделия показывать соответствующий код. В то же время удалить связанные с ними объекты-поля NakladNZKod и SnaklSnIKod, PlategNZKod и SplatSpIKod нельзя, так как НД лишится ключевого поля и подстановочная связь будет разрушена.

Можно для объектов-полей поместить значения False в их свойства Visible и тем самым не показывать их в компоненте отображения данных DBGrid. Однако «спрятанные» поля не будут видны не только в сетке, но и в любом другом визуализирующем компоненте Delphi (компоненты на вкладке Data Controls), что затруднит редактирование и ввод данных.

Выходом из положения является создание для сетки объектов-столбцов – специальных компонентов, облегчающих управление отображением данных. С их помощью можно изменять шрифт и цвет колонок, формировать их заголовки и т. д. Как и в случае объектов-полей, действует правило: если для сетки не создан ни один объект-столбец, в ней отображаются все объекты-поля; если создан хотя бы один объект-столбец, сетка будет отображать данные только из объектов-столбцов.

ВНИМАНИЕ! Объекты-столбцы будут созданы на этапе проектирования рабочих форм приложения, работающего с БД (см. п. 5.3).

4.6. Реализация бизнес-правил

В приложении, работающем с БД, обязательно должен быть реализован комплекс бизнес-правил. Бизнес-правила определяют реакцию системы на добавление, изменение или удаление данных, обеспечивая непротиворечивость и ссылочную целостность БД. Если, например, мы удалим запись из списка изделий какой-либо накладной, программа должна автоматически изменить сумму в соответствующей накладной, иначе мы получим недостоверную накладную. Такая реакция программы и есть бизнес-правило удаления изделий.

Бизнес-правила разрабатываются на основе тщательного изучения автоматизируемой области человеческой деятельности. Для файл-серверных систем они обычно реализуются в комплексе обработчиков событий AfterXXXXBeforeXXXX компонентов-наборов данных Table или Query.

В клиент-серверных системах эти действия, как правило, реализуются на сервере БД с помощью триггеров – процедур, которые автоматически запускаются при вставке, изменении или удалении записей.

Рассмотрим небольшой пример, реализующий часть бизнес-правил, связанных с удалением данных о накладной. Перед удалением накладной надо удалить список связанных с ней изделий, иначе в таблице Snakl появятся записи, которые ссылаются на несуществующую запись в таблице Naklad.

Наиболее подходящим местом для реализации этого бизнес-правила является обработчик события BeforeDelete набора данных Naklad. Это событие автоматически генерируется перед удалением записи. Перейдем к форме модуля данных, щелкнем на НД Naklad в правой панели модуля и дважды щелкнем в строке события BeforeDelete в окне инспектора объектов. Создадим такой обработчик:

procedure TDM.NakladBeforeDelete(DataSet: TDataSet);

begin

while not Snakl.Eof do

Snakl.Delete;

end;

В обработчике учитывается то обстоятельство, что НД Snakl связан с текущей записью НД Naklad отношением один-ко-многим и, следовательно, содержит данные только по тем изделиям, которые относятся к удаляемой накладной.

Аналогичным образом (с помощью обработчика BeforeDelete НД Plateg) реализуются бизнес-правила, связанные с удалением информации об оплаченных изделиях при удалении платежного требования.

procedure TDM.PlategBeforeDelete(DataSet: TDataSet);

begin

while not Splat.Eof do

Splat.Delete;

end;