Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 8
Раздел 4. Проектирование процессов вывода информации
Тема 4.2. Создание отчетов в среде FastReport 4.0
Практические занятия 7, 8
Содержание
1. Создание отчета "один-ко-многим"
При помощи средств FastReport 4.0 можно также создавать сложные отчеты. Такой отчет должен быть связан как минимум с двумя просмотрами, которые находятся в отношении "один-ко-многим".
Постановка задачи
Создать отчет, выводящий список поставщиков с соответствующими поставками для базы данных fabrika (Кондитерская фабрика).
Технология выполнения
1. Рассмотрим схему базы данных fabrika и определим, сколько пар компонентов необходимо предусмотреть для формирования отчета (до родительских форм, даже если они не используются в отчете, рис.1). В нашем случае их будет 3.
Рис.1. Таблицы, необходимые для формирования сложного отчета.
2. Создать пары элементов TFrxDBdataSet и Tfrxreport (вкладка Fast Report 4), расположить их на поверхности той формы, которая вызывает создаваемый отчет, и установить соответствующие свойства.
таблица |
Свойства |
TFrxDBdataSet |
TFrxreport |
Postavshiki |
DataSet Name |
dataBD.ADOPostavshik frxPostavshik |
frxreportPostavshik |
Postavka |
DataSet Name |
dataBD.ADOPostavka frxPostavka |
frxreportPostavka |
Surie |
DataSet Name |
dataBD.ADOSurie frxSurie |
frxreportSurie |
Рис.2. Главная форма, вызывающая отчет о поставщиках.
3. Правой кнопкой мыши выделить элемент frxreportPostavka + Edit report при вызове отчета будем ссылаться на этот элемент.
4. Подключить набор данных: report + data + необходимые флажки + ОК.
Рис.3. Подключение набора данных.
5. Подключить дерево объектов: View + Toolbars + data Tree (рис.4).
Рис.4. Дерево объектов.
6. Слева на панели инструментов выделить объект Insert Band + report Title. Расположить в нем объект Picture Object и выбрать рисунок, сохраненный предварительно в папке с приложением, созданном в Turbo Delphi. Также расположить элемент Text Object и прописать «Список постоянных поставщиков фабрики».
7. Расположить в отчете полосу Master data (Insert Band + master data), подключить ее к соответствующему элементу frxPostavshik (рис.5).
Рис.5. Подключение к набору данных.
С помощью мыши перетащить с набора данных необходимые поля и сверху в полосе report Title оформить соответствующие надписи (для того чтобы эти надписи появились один раз в отчете).
9. Расположить полосу Detail data (Insert Band + detail data), подключить ее к соответствующему элементу frxSurie(рис.5).
В полосе Detail data расположить: name, ed_izm, price с объекта frxSurie.
10. Правой кнопкой мыши щелкнуть по полосе Detail data и выбрать команду Add Child band и присоединить ее к frxPostavka.
Рис.6. Добавление подчиненной полосы.
11. На созданных полосах расположить следующие поля (методом перетаскивания с data Tree).
Child Band: data_post, kolvo, summa_post. Объясняющие надписи расположить объясняющие надписи в предыдущей полосе (рис.7).
Рис.7. Отчет в конструкторе.
12. Запустить на предварительный просмотр кнопкой предварительного просмотра или клавишей F9 (рис.8).
Рис.8.Отчет в режиме просмотра.
13. В главном меню приложения предусмотреть пункт Поставки поставщиков в разделе Отчеты из которого вызвать созданный отчет, прописав строку:
frxreportpostavka.ShowReport;
2. Создание отчетов при помощи SQL запроса
Постановка задачи
Для базы данных fabrika (Кондитерская фабрика) создать форму, содержащую кнопки вывода формируемых отчетов. Выбор фамилий клиентов или выбор товара, с указанием всех клиентов, купивших данный товар, происходит при помощи раскрывающихся списков, расположенных на форме (рис.9).
Рис.10. Таблицы базы, необходимые для формирования отчетов.
Технология выполнения
Для создания новой формы, содержащей требуемые списки вывода формируемых отчетов, необходимо в модуле UnitBD создать элементы связи с наборами данных базы данных. Таких компонентов 4 пары (по числу таблиц).
1. В модуле UnitBd расположим элементы связи с наборами данных, необходимых для создания формы (рис.10, 11). Для отчета необходимо создать следующие элементы.
Таблицы базы |
Tovar |
Klient |
Prodaga |
Sort |
ADOTable |
||||
Name |
ADOOtchetTovar |
ADOOtchetKlient |
ADOOtchetProdaga |
ADOOtchetSort |
Connection |
ADOfabrika |
ADOfabrika |
ADOfabrika |
ADOFabrika |
TableName |
Tovar |
Klient |
Prodaga |
Sort |
Active |
True |
True |
True |
True |
DataSourse |
||||
dataSet |
ADOOtchetTovar |
ADOOtchetKlient |
ADOOtchetProdaga |
ADOOtchetSort |
Name |
dataOtchetTovar |
dataOtchetKlient |
DataOtchetProdaga |
DataOtchetSort |
Рис.11. Компоненты в UnitBd.
2. Создайте форму FormOtchetprodaga (модуль UnitOtchetProdaga), установите свойство FormStyle=fsMDIChild, подключите модуль UnitBd. Выполните стандартные действия с дочерней формой.
3. В главной форме предусмотрите в разделе Отчеты пункт Продажа товара. Данный пункт будет вызывать форму FormOtchetprodaga.
4. Добавьте на общий модуль UnitBD компонент ADOQuery1(вкладка dbGo) для общей видимости данного запроса.
Для компонента ADOQuery1 необходимо установить свойства:
Name = QueryOtchetProdaga
Connection = ADOfabrika
dataSource = DataBD.DataOtchetKlient
SQL:
select *
from prodaga, Tovar, klient, surie
Active = true
5. Добавьте в модуль UnitBD компонент DataSource (вкладка Data Access), установите его свойства
DataSet = QueryOtchetProdaga
name=dataQueryotchetProdaga.
6. Расположить на форме, вызывающий отчет, элементы, связанные с формированием отчета.
таблица |
Свойства |
TFrxDBdataSet |
TFrxreport |
Klient |
DataSet Name |
dataBD.ADOOtchetKlient frxKlient |
reportKlient |
Prodaga |
DataSet Name |
dataBD.ADOOtchetProdaga frxProdaga |
reportProdaga |
Tovar |
DataSet Name |
dataBD.ADOOtchetTovar frxTovar |
reportTovar |
Surie |
DataSet Name |
dataBD.ADOOtchetSurie frxSurie |
reportSurie |
7. Расположить на форме элементы DBLookUpComboBox и установить для них соответствующие свойства, выводящие список наименований клиентов или товара.
Рис.12. Форма FormOtchetProdaga в конструкторе.
7. Правой кнопкой мыши выделить элемент reportProdaga + Edit report при вызове отчета будем ссылаться на этот элемент.
8. Подключить набор данных: report + data + необходимые флажки + ОК.
Рис.13. Подключение набора данных.
9. Подключить дерево объектов: View + Toolbars + data Tree.
10. Слева на панели инструментов выделить объект Insert Band + report Title. Расположить в нем объект Picture Object и выбрать рисунок, сохраненный предварительно в папке с приложением, созданном в Turbo Delphi. Также расположить элемент Text Object и прописать «Продажа товара клиентам фабрики».
11. Расположить в отчете полосу Master data (Insert Band + master data), подключить ее к соответствующему элементу frxKlient.
12. Расположить полосу Detail data (Insert Band + detail data), подключить ее к соответствующему элементу frxProdaga.
13. На созданных полосах расположить следующие поля (методом перетаскивания с Data Tree).
В полосе masterData1: name, fam, otch с объекта frxKlient, а также расположить текстовые названия данных полей.
В полосе DetailData: data_post, kolvo, summa_post. Объясняющие надписи расположить в полосе Masterdata
15. Расположите на форме FormOtborProdaga кнопку Отчет по клиентам и прописать код:
databd.QueryKlient.Active:=false;
dataBD.QueryKlient.SQL.Clear;
dataBD.QueryKlient.SQL.Add('SELECT *');
dataBD.QueryKlient.SQL.Add('from klient, tovar, prodaga');
dataBD.QueryKlient.SQL.Add('where klient.id_klient=prodaga.id_klient and tovar.id_tov=prodaga.id_tov and klient.fam like '''+ edit1.Text+'''');
dataBD.QueryKlient.Active:=true;
reportprodaga.showreport;
16. Предусмотрим создание отчета для вызова из раскрывающегося списка «выберите товар».
Правой кнопкой мыши выделить элемент reportTovar + Edit report при вызове отчета будем ссылаться на этот элемент.
Повторить все пункты 8 15 для создания отчета, подсоединив полосу MasterData к компоненту frxTovar. Остальное самостоятельно.