Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Формирование отчетов средствами Fast Reports




Отчет из нескольких таблиц с группировкой данных и итогами

Рассмотрим порядок создания сложных отчетов на примере создания отчета «Итоги Олимпиады». База зарегистрирована под псевдонимом (алиасой) «Olimpiada» при помощи BDE Administrator.

База данных в формате Paradox создана средствами Database Desktopи состоит из четырех таблиц:

1. «Страны» (Strani.db) с полями: KS (код страны), NS (название страны).

2. «Виды спорта» (Vidi_Sporta.db) с полями: KVS (код вида спорта), NVS (название вида спорта).

3. «Спортсмены» (Sportsmeni.db) с полями: RN (индивидуальный регистра­цион­ный номер), Fam (фамилия).

4. «Призеры» (Prizeri.db) с полями: KS (код страны), KVS (код вида спорта), RN (индивидуальный регистрационный номер), Z (число золотых медалей), S (число серебряных медалей), B (число бронзовых медалей).

На этапе создания базы данных связи между таблицами не формируются. Рассмотрим шаги по формированию отчета.

1. В Delphi 7 создадим новый проект и модуль данных командой File/New/Data Module(рис. 3.11.4.1).

Рис. 3.11.4.1. Окно модуля данных

 

На главной форме разместим две кнопки: для вызова отчета и для выхода из приложения. Добавим на форму модуля данных компонент Query. Для этого компонента создадим запрос командой SQL Builderиз контекстного меню. В поле Database выберем базу данных «Olimpiada», перенесем в запрос таблицы «Призеры» (Prizeri.db), «Страны» (Strani.db), «Виды спорта» (Vidi_Sporta.db), «Спортсмены» (Sportsmeni.db). Свяжем таблицы (рис. 3.11.4.2). Результат запроса будет отображать поля NS (название страны) и NVS (название вида спорта) вместо их кодов и поле Fam (фамилию участника) вместо его регистрационного номера.

Рис. 3.11.4.2. Окно Построителя запросов

 

2. Командой File/Use Unit подключим модуль данных к главной форме.

3. Разместим на форме модуля данных компоненты RvProject, RvSystem и RvQueryConnection со страницы Rave (рис. 3.11.4.1). Свойство Engine компонента RvProject1 установим равным RvSystem1. Свяжем компонент RvQueryConnection1 с запросом Query1 (свойство Query). Двойным щелчком на компоненте RvProject1 вызовем конструктор отчетов Rave Reports 5.0 (рис. 3.11.2.1).

4. Введем в проект объект просмотра данных. Для этого выполним команду File/New Data Object. Откроется окно выбора типа объекта. Выберем Direct Data View и нажмем кнопку Next. Появится диалоговое окно Data Connections со списком объектов доступа к данным. Выделим компонент RvQueryConnection1, щелкнем на кнопке Finish. В дереве объектов, в правой части окна конструктора, в вершине Data View Dictionary появятся источники данных DataView.

5. Расположим компонент Region (со страницы Report) на всей площади страницы, оставив сверху место для заголовка отчета и заголовков столбцов.

6. Разместим в компоненте Region1 шесть информационных полос: сначала две обычных полосы Band, затем - одну полосу данных DataBand, затем снова три обычных полосы Band (рис. 3.11.2.1). В полосе данных Band1 будет размещаться название страны. В полосу Band2 будет выводиться название вида спорта. Полоса DataBand1 служит для вывода фамилий призеров, а также числа золотых, серебряных и бронзовых медалей у каждого из них. Обычная полоса Band3 будет содержать итоговые данные (количество медалей разного достоинства) по виду спорта, Band4 – по каждой стране. В полосу Band5 будут выводиться итоги по отчету.

7. Расположим в полосе Band1 компонент DataText со свойствами DataView=DataView1, DataField=NS. В свойстве ControllerBand этой по­ло­сы выберем DataBand1 (мы указали, что эта полоса будет управляться полосой DataBand1). Свойства GroupDataView=DataView1, GroupKey=NS. Установим свойство BandStyle, редактор которого вызывается кнопкой с многоточием. В диалоговом окне Band Style Editor установим флажок напротив значения Group Header.

8. В полосе под именем Band2 будут выводиться названия видов спорта. Установим свойство BandStyle= Group Header для этой полосы. Группировка данных в этой полосе будет производиться по полю NVS источника данных DataView1 (GroupDataView=DataView1, Group­Key=NVS). Разместим в полосе компонент DataText под именем DataText2 со свойствами: DataView=DataView1, DataField=NVS.

9. В полосе DataBand1 будут выводиться имена медалистов и число золотых, серебряных и бронзовых медалей у каждого из них. Свяжем полосу с просмотром данных DataView1. В свойстве BandStyle отметим пункт Detail. Теперь разместим в этой полосе четыре компонента DataText, свяжем их с источником данных DataView1, один из них – с полем Fam, три других – с полями Z, S, B соответственно.

10. Полоса Band3 содержит итоговые данные по виду спорта. Свойства этой полосы: ControllerBand=DataBand1, BandStyle=Group Footer, GroupDataView=DataView1, Group­Key=NVS. Разместим в этой полосе компонент Text со страницы Standard c текстом «Итого медалей по виду спорта». Добавим на эту полосу три компонента CalcText (панель Report) со свойствами: Controller=DataBand1; CalcType=ctSum, DataField равно Z, S или B соответственно.

11. Полоса Band4 содержит итоговые данные по стране и имеет свойства: ControllerBand=DataBand1, BandStyle=Group Footer, GroupData­View=DataView1, Group­Key=NS. Разместим в этой полосе компонент Text с текстом «Итого медалей по стране». Аналогично предыдущему пункту добавим на эту полосу три компонента CalcText со свойствами Controller=DataBand1; CalcType=ctSum, DataField равно Z, S или B

12. В полосе Band5 расположим компонент Text с текстом «Итого медалей разыграно». Рядом расположим три компонента CalcText. Их свойства установим такими же, что и в предыдущем пункте. Свойство BandStyle этой полосы нужно установить в Body Footer.

13. Создадим заголовок отчета. Перенесем на форму компонент Text, разместим его над компонентом Region. Внесем в него текст «Итоги Олимпиады». Чуть ниже расположим два компонента DataText. В свойство DataField одного из этих компонентов укажем Report.DateShort. В свойство DataField другого компонента внесем строку: 'Лист ' +Report.CurrentPage. Это даст нам возможность отобразить в отчете сегодняшнюю дату и номер текущего листа. Над компонентом Region разместим четыре компонента Text, занесем в них заголовки колонок отчета (Призер, Золото, Серебро, Бронза).

14. Отформатируем отчет (установим нужные свойства шрифтов, добавим линию, отделяющую заголовки колонок отчета, выровняем компоненты в полосах). Разработка отчета завершена, его можно запустить в окне предварительного просмотра (кнопка Execute Report) и распечатать (рис. 3.11.4.3). Отчет сохраним в папке проекта под именем Project1.

 

Рис. 3.11.4.3. Вид отчета на бумаге

 

15. Вернемся в Delphi. В свойстве ProjectFile компонента RvProject1 укажем имя файла проекта Rave, под которым мы сохранили наш отчет. Зададим FormState=wsMaximized и, при необходимости, другие значения свойствам предварительного просмотра и печати отчетов.

16. В обработчик события OnClick кнопки Отчет добавим следующие операторы:

DataModule1.RvProject1.Open;

try

DataModule1.RvProject1.Execute;

finally

DataModule1.RvProject1.Close;

end;

В обработчик события OnDestroy формы Form1 добавим оператор:

DataModule1.RvProject1.Close;

Это обеспечит удаление отчета из памяти, если отчет запускался при выполнении приложения.

В обработчик события кнопки Выход добавим оператор Close.

Создание приложения завершено. Откомпилируем и сохраним его.

По результатам опроса Delphi Magazine Fast Reports (fast-report.com, www.fastreport.ru) входит в тройку лидеров по популярности среди инструментов для разработки отчетов для Borland Delphi. В 2004 г. Fast Reports выбран продуктом года.

Данный пункт подготовлен М.В. Зыковым.




Поделиться с друзьями:


Дата добавления: 2014-12-08; Просмотров: 577; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.