Компоненты панели инструментов
Кратко опишем назначение объектов конструктора 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 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|