Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Анализ данных cредствами многомерного куба Decision Cube




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

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


Средства анализа данных (OLAP, On Line Analytical Processing) представ­лены в Delphi на панели Decision Cube (Многомерный куб).

Рассмотрим порядок использования компонентов этой панели на примере анализа хода строительства по заказчикам и подрядчикам.

1. Создадим новый проект и на форме размеcтим компонент Deci­sionQuery. Выполним команду Decision Query Editor из кон­тек­ст­но­го меню этого компонента для вызова конструктора запросов (рис. 3.13.1).

2. Нажмем кнопку SQL Builder для построения запроса (рис. 3.13.2).

3. Перенесем поля Nz, Np, Ns в окно Dimension (измерение куба) и итоговые поля в клетках таблицы: итоги сметных и освоенных сумм (Sum(Ss),Sum(Fs)) и число строек (Count(Ns)) перенесем в окно Summaries.

4. Перейдем на страницу SQL Query и откорректируем текст коман­ды SQL: во фразе Select укажем наименование колонок (без пробелов) «Заказ», «Подряд», «Стройка», «Смета», «Освоено», «Строек» (рис.3.13.3). Нажмем кнопку Edit Query.

 
 

Рис. 3.13.1. Выбор данных, включаемых в таблицу анализа

 
 

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


Рис. 3.13.3. Страница с текстом команды запроса SQL

 

Разместим на форме вычислительный компонент DecisionCube со свойством DataSet=DecisionQuery1.

5. Разместим компонент связи DecisionSource со свойством DecisionCube=DecisionCube1.

6. Разместим компоненты пользовательского интерфейса DecisionPivot и вывода результирующей таблицы DecisionGrid со свойствами DecisionSource=DecisionSource1.

7. Установим свойство Active=True у компонента Decision­Query1, что вызовет цепочку расчетов и вывод таблицы (рис. 3.13.4).

 
 

Рис. 3.13.4. Итоговая таблица и диаграмма анализа строительства

 

Щелчок мышкой по кружку с плюсом или минусом или по кнопкам с наименованиями полей (осей измерений) на объекте DecisionPivot разворачивает или сворачивает соответ­ствующие колонки или столбцы в таблице. Используя контекстное меню кнопок полей (осей измерений), можно перемещать эти поля по осям. Первая кнопка объекта DecisionPivot позволяет выбрать тип итога в ячейках результирующей таблицы.

8. Для получения графического представ­ле­ния результирующей таб­лицы анализа разместим компонент DecisionGraph (наследник компонента Chart (п. 2.3.7.7)) со свойством DecisionSour­ce=Deci­sionSource1 (рис. 3.13.4). Вид диаграмммы можно настроить аналогично компоненту Chart (п. 2.3.7.7).

9. Выполним программу и проверим результат.

3.14. Клиент‑серверные СУБД

Клиент‑серверные СУБД обладают дополнительными возможностя­ми (например, запросы выполняются не на клиентской машине, а на от­дель­­­ном сервере‑базы данных и только результат возвращается и отоб­ра­жается на клиентской машине, что разгружает каналы передачи данных). Рассмотрим основные компоненты, применяемые дополнительно для орга­ни­зации работы таких СУБД.

Session ‑ компонент организует связь с конкретной ба­зой, учитывая ее особенности. Если таких особенностей нет, то ком­по­нент можно не использовать, и будет создан стандартный сеанс под именем Session.




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


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


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



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




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