- •Раздел 1. Проектирование баз данных. 2
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi. 25
- •Раздел 1. Проектирование баз данных.
- •1.1. Основы построения баз данных. Модели данных.
- •1.1.1. Реляционная модель данных.
- •1.1.2. Нормализация базы данных.
- •1.2. Проектирование базы данных методом “сущность-связь”.
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi.
- •2.1. Технология создания информационной системы.
- •2.1.1.Создание таблиц базы данных в Database Desktop.
- •2.1.2. Целостность базы данных.
- •Программа bde Administrator и модули данных.
- •Компоненты доступа и работы с данными. Тема: Наборы данных. Состояние и режимы наборов данных.
- •Тема: Объекты поля. Операции с полями.
- •Тема. Отображение и выбор значения поля.
- •Тема. Визуальные компоненты отображения записей из набора данных.
- •Закладки.
- •Тема. Ограничения на вводимые значения.
- •Тема. Сортировка набора данных.
- •Тема. Операции с таблицей базы данных.
- •Тема. Фильтрация записей.
- •Тема. Поиск записей.
- •Тема. Модификация набора данных.
- •Тема. Работа с отчетами
- •Отчет для связанных наборов данных
- •Составной отчет
- •Модули данных
- •Конструктор отчетов Rave Report
- •Реляционный способ доступа к данным.
- •Основные сведения о языке sql.
- •Оператор выбора Select.
- •Агрегирование и группирование записей.
- •Объединение таблиц.
- •Вложенные запросы.
- •Модификация записей.
- •Примеры баз данных
Отчет для связанных наборов данных
Создать отчет на основе данных, получаемых из нескольких таблиц БД, можно двумя способами.
С помощью компонента Query объединить данные из нескольких таблиц в один набор данных, затем построить отчет обычным образом.
Создать несколько наборов данных (по одному на каждую таблицу), соединить эти наборы связью “главный-подчиненный” с помощью свойств MasterSource и MasterFields. Для отображения информации из связанных наборов данных применяются компонент QRBand (для главной таблицы) и компонент QRSubDetail (для подчиненной таблицы).
Компонент QRSubDetail предназначен для включения в отчет информации из подчиненной таблицы. Свойство DataSet этого компонента должно содержать ссылку на подчиненный набор данных.
Пример. Создать отчет для связанных таблиц БД “Pokupka”. БД содержит две таблицы: Tovar.db и Pokupka.db. Главной таблицей является Tovar.db, а подчиненной Pokupka.db, связь устанавливается по полям Code_Tovar главного и подчиненного набора данных.
Для полосы данных QRBand в качестве набора данных устанавливается главный набор. В этой полосе размещаются компоненты QRDBText, связанные полями этого набора данных: Code_Tovar, Tovar, а также компоненты QRLabel – заголовки записей группы покупки товара: Data и Number.
Для полосы детализации устанавливается подчиненный набор данных. В ней размещаются компоненты QRDBText и QRExpr, в которых выводятся значения полей записей подчиненного набора данных.
Чтобы группа не выводилась для товаров, которые не имеют записи о покупке, для полос данных нужно создать обработчик события OnBeforePrint, содержащий команду:
PrintBand:=Form1.Pokupka.RecordCount>0;
Создать колонтитулы групп можно следующим способом: задать подствойствам HasHeader и HasFooter свойства Bands компонента QRSubDetail полосы детализации значения True, и автоматически будет создан соответствующий колонтитул.
Пример. БД Sotrudniki.
На новой форме Form2 расположить:
QuickRep1: Left=0; Top=0; DataSet= Form1.TbDoljn; (главный НД)
QRBand1: BandType=rbTitle
QRLabel: Caption=Список сотрудников;
QRBand2: BandType=rbDetail;
QRDBText1: DataSet=Form1.TbDoljn; DataField=D_Nazv;
QRSubDetail1: DataSet=TbSotrudniki; Master.DataSet=TbDoljn;
Master.DataSet.MasterSource=dsDoljn;
Master.DataSet.MasterField=D_Nazv;
QRDBText2: DataSet=Form1.TbSotrudniki; DataField=S_Fio;
f
Составной отчет
Составной отчет объединяет в себе несколько простых отчетов, которые следуют при печати один за другим.
Для создания композитного отчета используется компонент QRCompositeReport . Объединение отчетов осуществляется в его обработчике события OnAddReport путем добавления названий соответствующих отчетов в список свойства Report данного компонента. Например,
Procedure TForm3.QRCompositeReport1AddReports (Sender: TObject);
Begin
QRCompositeReport1.Reports.Add (Form1.QuickRep1);
QRCompositeReport1.Reports.Add (Form2.QuickRep1);
End;
Здесь композитный отчет составляется из двух отчетов: QuickRep1, который заранее определен в форме Form1, и QuickRep2, определенный в форме Form2.
Предварительный просмотр и печать составного отчета производятся с помощью метода Preview:
QRCompositeReport1.Preview;