КАТЕГОРИИ: Архитектура-(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тим компонент DecisionQuery. Выполним команду 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. Окно построителя запросов
Разместим на форме вычислительный компонент DecisionCube со свойством DataSet=DecisionQuery1. 5. Разместим компонент связи DecisionSource со свойством DecisionCube=DecisionCube1. 6. Разместим компоненты пользовательского интерфейса DecisionPivot и вывода результирующей таблицы DecisionGrid со свойствами DecisionSource=DecisionSource1. 7. Установим свойство Active=True у компонента DecisionQuery1, что вызовет цепочку расчетов и вывод таблицы (рис. 3.13.4). Рис. 3.13.4. Итоговая таблица и диаграмма анализа строительства
Щелчок мышкой по кружку с плюсом или минусом или по кнопкам с наименованиями полей (осей измерений) на объекте DecisionPivot разворачивает или сворачивает соответствующие колонки или столбцы в таблице. Используя контекстное меню кнопок полей (осей измерений), можно перемещать эти поля по осям. Первая кнопка объекта DecisionPivot позволяет выбрать тип итога в ячейках результирующей таблицы. 8. Для получения графического представления результирующей таблицы анализа разместим компонент DecisionGraph (наследник компонента Chart (п. 2.3.7.7)) со свойством DecisionSource=DecisionSource1 (рис. 3.13.4). Вид диаграмммы можно настроить аналогично компоненту Chart (п. 2.3.7.7). 9. Выполним программу и проверим результат. 3.14. Клиент‑серверные СУБД Клиент‑серверные СУБД обладают дополнительными возможностями (например, запросы выполняются не на клиентской машине, а на отдельном сервере‑базы данных и только результат возвращается и отображается на клиентской машине, что разгружает каналы передачи данных). Рассмотрим основные компоненты, применяемые дополнительно для организации работы таких СУБД. Session ‑ компонент организует связь с конкретной базой, учитывая ее особенности. Если таких особенностей нет, то компонент можно не использовать, и будет создан стандартный сеанс под именем Session.
Дата добавления: 2014-12-08; Просмотров: 1964; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |