Домашнее задание 1 Тема: Master – Detail отчет
Задана база данных, схема которой приведена на рис. 1а. Необходимо сформировать документ в соответствии со схемой, приведенной на рис. 1б.
Рис. 1 а) Схема базы данных. б) Схема документа |
Порядок выполнения работы
1. Установим в форму компоненты Panel1,Button1,QuickRep1, две пары компонентов набора данныхClientDataSet1 иClientDataSet2, а также компонент связиDataSource1.
Установка компонентов в форму |
2. Используя свойство DataSetкомпонента TDataSource, установим связьDataSource1 ->ClientDataSet1.
3. Посредством свойства FileNameкомпонентов класса TClientDataSet подключим компоненты
ClientDataSet1 к файлу C:\Пилипенко\Домашная работа 1\Data\Facultet.cds
ClientDataSet2 к файлуC:\Пилипенко\Домашная работа 1\Data\sGroup.cds
4. Установим Master–Detailотношение посредством свойствMasterSourceиMasterFieldsкомпонентаClientDataSet2 для полей СF_CODE-> СF_CODEтаблицsGroupиFacultet.
. Установка master – detail отношения |
5. Используя свойство DataSetкомпонента QuickRep1, установим связь QuickRep1 ->ClientDataSet1.
6. Для компонента QuickRep1 установим в активное состояние полосу Detail посредством свойства Bends.HasDetail:=true.
Активизация полосы Detail |
7. Поместим в полосу Detail компонент QRDBText1 и подключим его к полю F_Name таблицыFacultetпосредством выбора значений свойствDataSet:=ClientDataSet1 и DataField :=F_Name.
Установка компонента QRDBText в полосу Detail |
8. В обработчике события щелчка кнопки Button1 запишем следующие строки программы, активизирующей компоненты.
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Open; //активизация компонента (доступ к данным)
ClientDataSet2.Open; //активизация компонента (доступ к данным)
QuickRep1.Preview; //вывод документа
end;
9. Скомпилируем приложение и выполним команду вывода документа:.
Первоначальный вид документа |
Сохраним разработанный проект File->SaveAll.
Установим в компонент QuickRep1 компонентQRSubDetail.
Установка компонента QRSubDetail |
12. Свяжим компонент QRSubDetailс набором данныхClientDataSet2, посредством свойстваDataSet. Установите связь полосы вторичной детализации QRSubDetail с полосой первичной детализации Detail используя свойство LinkBand(QRSubDetail1.LinkBand:= QuickRep1. DetailBand1).
13. Установим в полосу SubDetailкомпонентQRDBText1, который свяжим с полемGR_Nameнабора данныхClientDataSet2 посредством свойствDataSetиDataField.
Установка компонента QRDBText в полосу Sub Detail |
14. Скомпилируем приложение и получим документ:
Вид Master – Detail документа |
15. Для вывода информации в алфавитном порядке необходимо описать порядок сортировки полей таблиц.
В обработчике события кнопки Button1 допишем следующие строки программы:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.IndexFieldNames :='F_Name'; //сортировка в Master отношений
ClientDataSet2.IndexFieldNames :='CF_Code; GR_Name'; //сортировка в Detail отношений
ClientDataSet1.Open; //активизация компонента (доступ к данным)
ClientDataSet2.Open; //активизация компонента (доступ к данным)
QuickRep1.Preview; //вывод документа
end;