002 — Создание перекрестных таблиц в Delphi

Условие задания

Задана таблица товаров, со следующей структурой полей

Название поля

Тип данных Ключевое поле

Объяснение

ID_Tovar

Счетчик +

Уникальный идентификатор поля

Name

Текстовый

Название товара

Price

Вещественное число

Цена товара

Count

Целое число

Количество единиц товара

Используя средства системы программирования Delphi-7 сделать перекрестную таблицу по следующим двум измерениям: Название товара и цена единицы товара. Также осуществить суммирование по столбцам и строкам таблицы.

 

Порядок выполнения

  1. Запуск Delphi.
  1. Создание базы данных и таблицы средствами утилиты Database Desktop.

Создаем базу данных с псевдонимом myDb. Создаем таблицу базы данных с названием «tovar.db» имеющую структуру согласно с условием задачи.

  1. Компоненты для создания перекрестной таблицы.

Для создания перекрестных таблиц в системе программирования Delphi используются компоненты с вкладки «Decision Cube» палитры компонент (рис. 1).

01_01_00_001_01_

Рис. 1. Вкладка “Decision Cube” с палитры компонент

Для начала выносим на форму следующие четыре компонента с вкладки «Decision Cube»:

– компонент типа TDecisionCube (по умолчанию имеет имя DecisionCube1);

– компонент типа TDecisionQuery (по умолчанию имеет имя DecisionQuery1);

– компонент типа TDecisionSource (по умолчанию имеет имя DecisionSource1);

– компонент типа TDecisionGrid (имя по умолчанию DecisionGrid1).

Из этих четырех компонент только TDecisionGrid предназначен для отображения данных таблицы.

Форма с размещенными компонентами имеет вид (рис. 2):

01_01_00_001_02_

Рис. 2. Главная форма приложения с компонентами DecisionCube1, DecisionQuery1, DecisionSource1, DecisionGrid1

 

  1. Настройка компонент.

С помощью Object Inspector устанавливаем следующие свойства для компонент:

– в компоненте DecisionCube1 свойство DataSet устанавливаем равным в DecisionQuery1;

– в компоненте DecisionQuery1 свойство DatabaseName устанавливаем в значение «myDb»;

– в компоненте DecisionSource1 свойство DecisionCube устанавливаем в значение DecisionCube1;

– в DecisionGrid1 свойство DecisionSource равно DecisionSource1.

 

  1. Настройка “Decision Query Editor”.

Непосредственная настройка перехрестной таблицы осуществляется в компоненте DecisionQuery1. Для вызова окна настройки нужно кликнуть правой кнопкой мышки и из контекстного меню выбрать «Decision Query Editor…». Другой метод вызова – двойной клик мышкой в области компонента DecisionQuery1 (рис. 3).

01_01_00_001_03_

Рис. 3. Вызов редактора для настройки в компоненте DecisionQuery1

В итоге откроется окно «Decision Query Editor» (рис. 4).

01_01_00_001_04_

Рис. 4. Окно редактора “Decision Query Editor”

Как видно из рисунка, окно состоит из двух вкладок:

– вкладка «Dimensions/Summaries» позволяет задавать поля таблицы и агрегатные функции (суммы, общее количество и т.д.) на основании которых производятся вычисления;

– вкладка «SQL Query» позволяет описывать запросы к таблице на языке SQL.

В этом окне доступны следующие области:

– область «List of Available Fields» выводит информацию о полях выбранной таблицы из списка (области) Table;

– область Dimensions выводит информация о полях таблицы, которые есть измерениями на основании которых рассчитываются агрегатные функции (суммы, среднее арифметическое и т.д.);

– область Summaries выводит какие агрегатные функции применяются к таблице;

– поле Table показывает таблицу базы данных, для которой ведутся вычисления;

– поле Database задает базу данных, к таблицам которой осуществляются вычисления.

В нашем случае выбираем таблицу «tovar.db» бази даних «myDb».

Окно редактора будет иметь следующий вид (рис. 5).

01_01_00_001_05ru

Рис. 5. Окно редактора “Decision Query Editor” после выбора базы данных “myDb” и таблицы “tovar.db”

С помощью стрелок влево (вправо) можно добавлять поля таблицы, которые будут принимать участие в вычислениях. Поля добавляются в область Dimensions. С помощью стрелок влево/вправо, размещенных в нижней части редактора можно задавать ту или иную агрегатную функцию (рис. 6).

01_01_00_001_06ru

Рис. 6. Добавление агрегатных функций

Сформируем окно редактора таким образом, чтобы оно имело следующий вид (рис. 7) и подтвердим свой выбор кликом на «ОК».

01_01_00_001_07ru

Рис. 7. Окно редактора после заполнения (настройки) всех полей

Во вкладке «SQL Query» можно просмотреть вид сформированного редактором запроса на языке SQL.

 

  1. Настройка компонента DecisionCube1.

После настройки компонента TDecisionQuery можна осуществить настройку компонента TDecisionCube.

Для этого вызывается редактор «Decision Cube Editor» точно так же как и в случае с редактором «Decision Query Editor» (рис. 8).

01_01_00_001_08ru

Рис. 8. Вызов редактора “Decision Cube Editor” компонента DecisionCube1

В результате откроется окно “Decision Cube Editor” (рис. 9).

01_01_00_001_09ru

Рис. 9. Окно редактора “Decision Cube Editor”

Окно содержит две вкладки: «Dimension Settings» и «Memory Control».

В первой вкладке «Dimension Settings» можно определить ряд настроек для измерений куба. Вкладка содержит такие поля:

– поле «Display Name» задает имя, которое будет отображаться в компоненте отображения данных TDecitionGrid;

– список «Type», который задает тип поля. В нашем случае список неактивен, так как информация вытягивается из компонента TDecisionQuery;

– список «Active Type» задает момент загрузки в память базы данных («As Needed» — по мере необходимости, «Active» — всегда, «Inactive» — никогда);

– строка «Format» позволяет задавать формат отображаемых значений;

– выпадающий список «Grouping» позволяет группировать данные по времени.

В нашем случае оставляем все как есть без изменений.

 

  1. Отображение перекрестной таблицы.

Если предыдущие шаги выполнены верно, то можно отобразить перекрестную таблицу. Для этого в компоненте DecisionQuery1 свойство Active устанавливаем в значение true.

В результате форма программы будет иметь следующий вид (рис. 10).

01_01_00_001_10ru

Рис. 10. Вид формы после проведенных настроек

После запуска программы на выполнение получаем перекрестную таблицу (рис. 11).

01_01_00_001_11ru

Рис. 11. Результат выполнения программы

Итоги

В этой работе изучено создание элементарных перекрестных таблиц в системе программирования Delphi-7.

Для организации работы с перекрестными таблицами используются следующие компоненты с палитры «Decision Cube»:

– компонент TDecisionCube;

– компонент TDecisionQuery;

– компонент TDecisionSource;

– компонент отображения TDecisionGrid.

Предварительно база данных и таблица должны быть созданы средствами утилиты Database Desktop, которая идет как инструмент работы с базами данных в системе программирования Delphi -7.

В рассмотренном примере создана таблица по двум измерениям. Пользователь может на свое усмотрение создавать перекрестные таблицы с большим количеством измерений. Увеличение измерений приводит к усложнению восприятия сформированных данных в таблице. Поэтому рекомендуется, чтобы число измерений колебалось от 2 до 4.