Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Отчет из нескольких таблиц с группировкой данных и итогами
Рассмотрим порядок создания сложных отчетов на примере создания отчета «Итоги Олимпиады». База зарегистрирована под псевдонимом (алиасой) «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, GroupKey=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, GroupKey=NVS. Разместим в этой полосе компонент Text со страницы Standard c текстом «Итого медалей по виду спорта». Добавим на эту полосу три компонента CalcText (панель Report) со свойствами: Controller=DataBand1; CalcType=ctSum, DataField равно Z, S или B соответственно.
11. Полоса Band4 содержит итоговые данные по стране и имеет свойства: ControllerBand=DataBand1, BandStyle=Group Footer, GroupDataView=DataView1, GroupKey=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. Создание приложения завершено. Откомпилируем и сохраним его.
|
||||||
Последнее изменение этой страницы: 2017-02-08; просмотров: 590; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.126.241 (0.007 с.) |