- •О. Б. Малков работа с базами данных в среде delphi Учебное пособие для студентов заочной формы обучения
- •Содержание
- •1. Реализация работы с базами данных в среде delphi
- •1.1. Базы данных и системы управления базами данных
- •1.2. Технология доступа к данным bde
- •1.3. Компоненты приложений, работающих с базами данных
- •2. Демонстрационная база данных
- •2.1. Логическая модель данных предметной области
- •2.2. Физическая модель данных предметной области
- •3. Создание базы данных
- •3.1. Создание псевдонима
- •3.2. Создание структуры таблиц базы данных
- •3.3. Свойства таблиц Paradox
- •3.4. Заполнение таблиц базы данных
- •4. МодулЬ данных
- •4.1. Создание модуля данных
- •4.2. Связывание наборов данных
- •4.3. Создание объектов-полей
- •4.4. Проектирование и анализ структуры базы данных
- •4.5. Создание объектов-столбцов
- •4.6. Реализация бизнес-правил
- •5. Создание приложения, работающего с базой данных
- •5.1. Выбор типа пользовательского интерфейса
- •5.2. Создание главной формы
- •5.3. Создание рабочих форм
- •5.4. Создание форм ввода новых данных
- •6. Создание запросов
- •6.1. Компонент Query
- •6.2. Создание sql-запросов
- •6.2.1. Простая выборка данных
- •6.2.2. Выборка из связанных таблиц
- •6.2.3. Сортировка записей
- •6.2.4. Сложные критерии отбора
- •6.2.5. Псевдонимы таблиц и комментарии
- •6.2.6. Агрегатные функции и группировка записей
- •6.2.7. Создание и удаление таблиц и индексов
- •6.2.8. Вставка, удаление и редактирование записей
- •Insert into Имя_таблицы (Список_полей
- •Values (Список_значений)
- •6.3. Построение запроса в демонстрационной базе данных
- •7. Создание отчетов
- •7.1. Основы технологии Rave Reports
- •7.2. Визуальная среда Rave Designer
- •7.3. Составляющие проекта отчета
- •7.3.1. Библиотека отчетов
- •7.3.2. Каталог глобальных страниц
- •7.3.3. Каталог объектов данных
- •7.4. Типы отчетов
- •7.4.1. Отчет с единственной таблицей или запросом
- •7.4.2. Отчет главный-детальный
- •7.4.3. Группирующий отчет
- •7.5. Пример создания отчетов в приложении Sale
- •7.6. Экспорт отчета в файл
- •8. Создание СправочнОй системЫ
- •8.1. Создание файла документа справочной информации
- •8.2. Создание проекта справочной системы
- •8.3. Доступ к справочной информации
- •9. Создание установочного диска
- •9.1. Программа InstallShield Express
- •9.2. Создание проекта инсталляционной программы
- •Библиографический список
4.5. Создание объектов-столбцов
После того как мы создали подстановочные поля для НД Naklad и Snakl, Plateg и Splat, связанные с ними ключевые поля NZKod и SnIKod, PZKod и SpIKod стали лишними – не имеет смысла рядом с названием заказчика или изделия показывать соответствующий код. В то же время удалить связанные с ними объекты-поля NakladNZKod и SnaklSnIKod, PlategNZKod и SplatSpIKod нельзя, так как НД лишится ключевого поля и подстановочная связь будет разрушена.
Можно для объектов-полей поместить значения False в их свойства Visible и тем самым не показывать их в компоненте отображения данных DBGrid. Однако «спрятанные» поля не будут видны не только в сетке, но и в любом другом визуализирующем компоненте Delphi (компоненты на вкладке Data Controls), что затруднит редактирование и ввод данных.
Выходом из положения является создание для сетки объектов-столбцов – специальных компонентов, облегчающих управление отображением данных. С их помощью можно изменять шрифт и цвет колонок, формировать их заголовки и т. д. Как и в случае объектов-полей, действует правило: если для сетки не создан ни один объект-столбец, в ней отображаются все объекты-поля; если создан хотя бы один объект-столбец, сетка будет отображать данные только из объектов-столбцов.
ВНИМАНИЕ! Объекты-столбцы будут созданы на этапе проектирования рабочих форм приложения, работающего с БД (см. п. 5.3).
4.6. Реализация бизнес-правил
В приложении, работающем с БД, обязательно должен быть реализован комплекс бизнес-правил. Бизнес-правила определяют реакцию системы на добавление, изменение или удаление данных, обеспечивая непротиворечивость и ссылочную целостность БД. Если, например, мы удалим запись из списка изделий какой-либо накладной, программа должна автоматически изменить сумму в соответствующей накладной, иначе мы получим недостоверную накладную. Такая реакция программы и есть бизнес-правило удаления изделий.
Бизнес-правила разрабатываются на основе тщательного изучения автоматизируемой области человеческой деятельности. Для файл-серверных систем они обычно реализуются в комплексе обработчиков событий AfterXXXX – BeforeXXXX компонентов-наборов данных 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;