Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Компоненты панели инструментов





Кратко опишем назначение объектов конструктора FastReport:

Бэнд - позволяет задать область отчета с определенным поведением.

Текст - отображает одну или несколько строк текста внутри прямо­угольной области.

Рисунок - отображает графический файл формата BMP, JPEG, ICO, WMF, EMF.

Линия - отображает горизонтальную или вертикальную линию.

Служебный текст - отображает служебную информацию (дата, время, номер страницы), а также агрегатные значения.

Вложенный отчет - позволяет вставить дополнительный отчет внутрь основного.

Фигура - объекты категории «Рисование» представляют собой различные геометрические фигуры (наклонная линия, прямоугольник, прямоугольник с закругленными углами, эллипс, треугольник, ромб).

Диаграмма - отображает данные в виде диаграмм различных типов (круговая диаграмма, гистограмма и т.п.).

RichText - отображает форматированный текст в формате RTF.

CheckBox - отображает независимый переключатель (флажок).

Штрихкод - отображает данные в виде штрихкода (доступно около десятка разных типов штрихкодов).

OLE - может отображать любой объект, используя технологию OLE.

Градиент - отображает градиентную заливку.

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

Рассмотрим порядок создания сложных отчетов на примере отчета «Итоги Олимпиады». Каталог базы зарегистрирован под псевдонимом «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 (число бронзовых медалей).

На этапе создания базы данных связи между таблицами не форми­руются. Отчет строится на основе SQL-запроса к базе данных.



1. В Delphi создадим новый проект. На главной форме приложения разместим две кнопки (рис. 3.12.4.1): для вызова отчета и для выхода из программы. Также добавим на форму компонент Query со страницы BDE (или Data Access) под именем Query1 и компоненты frxDBDataset и frxDBReport со страницы FastReport 3.0 под именами frxDBDataset1 и frxReport1 соответ­ственно.

Рис. 3.12.4.1. Вид формы вызова отчета

 

2. Для компонента Query создадим запрос с помощью SQL Builder (правой кнопкой мыши на компоненте Query1, пункт SQL Builder). В поле Database выберем базу данных «Olimpiada», перенесем в запрос таблицы «Призеры» (Prizeri.db), «Страны» (Strani.db), «Виды спорта» (Vidi_Sporta.db), «Спортсмены» (Sportsmeni.db). Свяжем таблицы (рис. 3.12.4.2).

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

 

3. Результат запроса будет отображать поля NS (название страны) и NVS (название вида спорта) вместо их кодов и поле Fam (фамилию участника) - вместо его индивидуального регистрационного номера. На странице Sorting укажем поля сортировки Strani.NS, Vidi_sporta.NVS, Sportsmeni.Fam (страны, виды спорта и фамилии спорт­сменов). Нажмем кнопку Execute Query для проверки запроса. Закроем окно построителя.

4. Свяжем компонент frxDBDataset1 с запросом Query1 (свойство DataSet).

5. Двойным щелчком на компоненте frxReport1 вызовем конструктор отчетов FastReport (рис. 3.12.2.1). Подключим к отчету источник данных frxDBDataset1. Для этого вы­полним команду Report/Data и в появившемся окне отметим галочкой пункт frxDBDataset1; подтвердим выбор нажатием кнопки ОК.

6. С помощью инструмента Бэнд (Band) добавим на рабочее поле страницы Page1 информаци­онные полосы: Report Title, Column Header. Добавим две полосы Group Header: в появившемся диалоговом окне Group (рис. 3.12.4.3) для первой полосы установим наш источник данных frxDBDataset1, поле NS, для второй ­- поле NVS. При изменении значений этих полей будет происходить переход отчета на следующую группу. Разместим полосы Master Data с подключением к источнику данных frxDBDataset1, Group Footer (две полосы) и Report Summary. В полосе данных GroupHeader1 будет размещаться название страны. В полосу GroupHeader2 будет выводиться название вида спорта. Полоса MasterData1 служит для вывода фамилий призеров, а также числа золотых, серебряных и бронзовых медалей у каждого из них. Полоса GroupFooter2 будет содержать итоговые данные (число медалей разного достоинства) по виду спорта, GroupFooter1 - по каждой стране. В полосу ReportSummary1 будут выводиться итоги по отчету.

Рис. 3.12.4.3. Окно группировки данных

 

7. Создадим заголовок отчета. С помощью инструмента Edit Text Tool или Text Object добавим на полосу ReportTitle1 компонент Memo1. Внесем в него текст «Итоги Олимпиады» и разместим в центре полосы.

8. Из правой части окна конструктора с вкладки Variables (список систем­ных и пользовательских переменных) перетащим мышкой перемен­ную Date на полосу ReportTitle1, поместив ее под текстом «Итоги Олимпиады». Это позволит отобразить в отчете системную дату.

9. В полосе ColumnHeader1 разместим четыре компонента Memo, занесем в них заголовки колонок отчета («Призер», «Золото», «Серебро», «Бронза»).

10. Из правой части окна конструктора с вкладки Data перетащим на по­лосу GroupHeader1 поле NS. Конструктор автоматически создаст компонент Memo с текстом [frxDBDataset1."NS"]. Это значит, что компонент Memo будет отображать записи поля NS (название страны). Обратите внимание на то, что имена полей заключаются в кавычки.

11. Аналогично на полосу GroupHeader2 перетащим поле NVS (здесь будут выводиться названия видов спорта), а на полосу MasterData1 - поля Fam и Z, S, B (фамилия призера и число им завоеванных золотых, серебряных и бронзовых медалей).

12. Полоса GroupFooter2 содержит итоговые данные по виду спорта. Разместим в этой полосе компонент Memo c текстом «Медалей в этом виде спорта:». Добавим на эту полосу еще компонент Memo. В окне ввода текста нажмем на кнопку Insert Aggregate (вставка агрегатной функции). Откроется диалоговое окно установки параметров агрегирования (рис. 3.12.4.4). Выберем функцию агрегирования SUM, привязку к полосе -MasterBand1, набор данных - frxDBDataSet1, поле - Z, щелкнем по кнопке OK. Проделаем то же для полей S и B (можно скопировать объект Memo для поля Z и заменить букву имени поля Z на S и B).

Рис. 3.12.4.4. Окно агрегирования

 

13. Полоса GroupFooter1 содержит итоговые данные по стране. Разместим в этой полосе компонент Memo c текстом «Медалей по стране:». Компоненты с агрегированием можно скопировать из полосы GroupFooter2.

14. В полосе ReportFooter1 расположим компонент Memo с текстом «Всего медалей разыграно:». Добавим на эту полосу еще один компонент Memо, вызовем конструктор вставки агрегатной функции и укажем те же параметры, что на предыдущем шаге, отметив также пункт «Running Total». Это приведет к тому, что значение переменной не будет обнуляться при переходе отчета на следующую группу (страну или вид спорта). То же самое проделаем для полей S и B. Таким образом, в конце отчета мы получим сумму врученных на Олимпиаде медалей каждого достоинства.

15. Отформатируем отчет (установим нужные свойства шрифтов, добавим линию, отделяющую заголовки колонок отчета, выровняем компоненты в полосах). Установим выравнивание компонентов. Разработка отчета завершена (рис. 3.12.2.1), его можно запустить в окне предваритель­ного просмотра и распечатать.

Отчет сохраним в папке проекта под именем Olimpiada.fr3.

16. Вернемся в Delphi. В обработчик события OnClick кнопки Отчет (рис. 3.12.4.1) добавим оператор вызова отчета: frxReport1.ShowReport.

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

17. Создание приложения завершено. Выполним приложение, нажмем кнопку Отчет и проверим отчет (рис. 3.12.4.5). Откомпилируем, сохраним приложение.

Рис. 3.12.4.5. Окно просмотра отчета





Рекомендуемые страницы:

Воспользуйтесь поиском по сайту:



©2015- 2021 megalektsii.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.