Двумерные перекрестные таблицы



Двумерные перекрестные таблицы

Информация в двумерных перекрестных таблицах группируется по двум факторам. Примером такой таблицы является SaieGoods, представленная на рис. 10.2. Она содержит сведения о стоимости проданных товаров по городам. Данная

Экспорт данных



Экспорт данных

Созданную в Visual FoxPro перекрестную таблицу вы можете использовать в программах управления электронными таблицами, таких как Microsoft Excel, Lotus 1—2—3 и т. д. Для этого вы должны ее экспортировать в формат той электронной таблицы, в которой будет осуществляться дальнейшая обработка.

Для экспорта данных предназначена команда Export (Экспорт) из меню File (Файл). В результате выполнения этой команды открывается диатоговое окно Export (Экспорт) (рис. 10.11), в котором вы должны в поле Туре (Тип) задать формат данных, в поле То (Куда) указать имя выходного файла, в поле From (Откуда) — исходную таблицу, а затем нажать кнопку ОК.



Перекрестные таблицы и диаграммы



Глава 10. Перекрестные таблицы и диаграммы

Перекрестные таблицы Одномерные перекрестные таблицы Двумерные перекрестные таблицы Создание перекрестной таблицы с помощью мастера Программа создания перекрестной таблицы Экспорт данных Построение диаграмм Создание диаграммы с помощью мастера Graph Wizard Создание трехмерных диаграмм



Одномерные перекрестные таблицы



Одномерные перекрестные таблицы

Простейшим типом перекрестной таблицы является одномерная перекрестная таблица, используемая для анализа распределения данных одного типа по одному фактору.

Рассмотрим создание перекрестной таблицы, отображающей распределение клиентов по городам (рис. 10.1). Исходная информация содержится в таблице Customer.

В окне проекта на вкладке Data (Данные) выберите группу Queries (Запросы) и нажмите кнопку New (Новый). Добавьте в окно конструктора запросов таблицу Customer со списком клиентов. На вкладке Fields (Поля) окна конструктора запросов разместите в списке Selected fields (Выбранные поля) поле ccity и итоговое поле count (icdcustomer), подсчитывающее количество клиентов. На вкладках Group By (Группировка) и Order By (Упорядочение) установите группировку и упорядочение по полю ccity. Выполните команду Run Query (Выполнить запрос) меню Query (Запрос). Сохраните результат выборки в таблице cntcust, воспользовавшись для этого кнопкой Query Destination (Результаты запроса) панели инструментов Query Designer (Конструктор запроса). Данная таблица будет содержать распределение клиентов по городам (см. рис. 10.1). Вы можете использовать эту таблицу для формирования отчета или представленых данных в виде диаграммы.

Перекрестные таблицы



Перекрестные таблицы

В Visual FoxPro имеются мощные средства анализа большого объема информации, хранящегося в базе данных в одной или нескольких таблицах — диаграммы и перекрестные таблицы.

Отображение данных в виде диаграмм и графиков позволяет решать самые разные задачи. Основное достоинство такого представления — наглядность. На диаграммах хорошо просматриваются тенденции к изменению, различные соотношения, прирост, взаимосвязь различных процессов и т. д.

Но, как правило, таблицы не подготовлены для создания диаграмм. Данные в них представлены в виде нескольких составляющих, расположенных в большом количестве записей. Диаграмма, построенная для такой таблицы, будет иметь вид, который трудно использовать для анализа. Поэтому, прежде чем строить диаграмму, информацию необходимо преобразовать к виду, наиболее приемлемому для построения диаграмм. Для этого в Visual FoxPro используются перекрестные таблицы и итоговые запросы.

Перекрестная таблица — это таблица, в которой информация группируется в соответствии со значениями одного или нескольких полей и фактически приводится к виду, аналогичному электронной таблице.

В Visual FoxPro для построения диаграмм используется Microsoft Graph. Помимо этого, для построения диаграмм из подготовленных в Visual FoxPro данных вы можете использовать Microsoft Excel и другие электронные таблицы, имеющиеся в среде Windows.

Перекрестная таблица в Visual FoxPro имеет вид, похожий на электронную таблицу. Но, в отличие от последней, вам не нужно вручную заполнять каждую ячейку таблицы, предварительно определив ее значение. Visual FoxPro автоматически разбивает данные на группы в соответствии с одним или несколькими факторами и выполняет итоговые вычисления над данными, включенными в группу. После чего информация, полученная в результате групповых вычислений, сортируется и заносится в перекрестную таблицу. Например, используя перекрестную таблицу, вы можете определить, сколько клиентов фирмы проживает в том или ином районе города или как распределяются между ними проданные товары. Очевидно, что каждый клиент может покупать один и тот же товар несколько раз. Получить такие сведения без создания перекрестной таблицы достаточно трудно. При работе с Visual FoxPro вы можете использовать одномерные и многомерные перекрестные таблицы. Для создания простейших одномерных перекрестных таблиц применяйте обычный итоговый запрос. Для построения двумерных и более сложных перекрестных таблиц в Visual FoxPro используется мастер создания перекрестных таблиц Cross-Tab Wizard (Мастер построения перекрестных таблиц).

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





Построение диаграмм



Построение диаграмм

Для визуального анализа данных, хранящихся в таблицах Visual FoxPro, вы можете использовать диаграммы.

В распоряжение разработчика Visual FoxPro предоставляет двенадцать типов диаграмм. Вам необходимо правильно определиться с ее типом, т. к. одну и ту же информацию можно представить с помощью диаграмм разных типов.

Для построения диаграмм в Visual FoxPro используется программа Microsoft Graph, данные в которую передаются с помощью мастера построения диаграмм или с использованием приложения wzgraph.app.





Программа создания перекрестной таблицы



Программа создания перекрестной таблицы

Мастер перекрестных таблиц использует в своей работе программу vfpxtab.prg. Эту программу вы можете вызывать из ваших программ, предварительно подготовив и открыв в текущей области требуемую таблицу.

Для работы программы, создающей перекрестную таблицу, необходимо определить используемые в ней параметры (табл. 10.4).



Одномерная перекрестная таблица



Рис. 10.1. Одномерная перекрестная таблица




Двумерная перекрестная таблица



Рис. 10.3. Двумерная перекрестная таблица




Выбор исходной таблицы и полей



Рис. 10.4. Выбор исходной таблицы и полей


На втором шаге в работе мастера (рис. 10.5) необходимо указать расположение полей в создаваемой перекрестной таблице. Вам предлагается разместить поля таблицы в трех полях диалогового окна. Для перемещения полей используйте метод "перенести-и-оставить".

Определение строк, столбцов и поля данных



Рис. 10.5. Определение строк, столбцов и поля данных


Перенесите поле город в область Column (Колонка), поле код товара — в область Row (Ряд) и поле сумма - в область Data (Данные). После этого диалоговое окно будет выглядеть так, как показано на рис. 10.6. Нажмите кнопку Next (Далее) для перехода к следующему шагу.



Диалоговое окно после определения строк, столбцов и поля данных



Рис. 10.6. Диалоговое окно после определения строк, столбцов и поля данных


В следующем диалоговом окне Cross-Tab Wizard (Мастер построения перекрестных таблиц) (рис. 10.7) содержатся опции, позволяющие вычислять групповые значения по полю (табл. 10.1).

Определение типа группировки и итогового столбца



Рис. 10.7. Определение типа группировки и итогового столбца


На третьем шаге в работе мастера вы можете также добавить столбец в создаваемую перекрестную таблицу, который будет содержать итоговое значение по каждой строке результирующей таблицы (см. рис. И).7). Мастер позволяет выбрать одну из опций (табл. И).2).

Завершающая стадия создания перекрестной таблицы



Рис. 10.8. Завершающая стадия создания перекрестной таблицы


Установите в завершающем окне мастера одну из опций, описанных в табл. 10.3.

Завершающая стадия создания перекрестной таблицы



Рис. 10.9. Завершающая стадия создания перекрестной таблицы


Сохраните программу с именем salemon.prg и запустите ее на выполнение. Будет создана таблица smon с ежемесячными итоговыми объемами продаж товаров (рис. 10.10).

Совет
Совет

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



Итоговые ежемесячные объемы продаж товаров



Рис. 10.10. Итоговые ежемесячные объемы продаж товаров




Диалоговое окно Export



Рис. 10.11. Диалоговое окно Export




Выбор исходной таблицы и полей



Рис. 10.12. Выбор исходной таблицы и полей


Завершив выбор полей, нажмите кнопку Next (Далее).

В следующем диалоговом окне мастера (рис. 10.13) выполните действия: укажите поле, содержащее названия городов, значения которого будут использоваться в категориях диаграммы; укажите поле, содержащее количество клиентов, значения которого будут использоваться в рядах данных
Для этого перенесите поле Город исходной таблицы в область Axis (Ось), расположенную под графиком, а поле количество — в область Data Series (Ряд данных) диалогового окна. Затем нажмите кнопку Next (Далее). На следующем шаге вы должны указать тип создаваемой диаграммы (рис. 10.14), выбрав значение из предложенных вариантов. В данном примере выберите гистограмму. Для перехода к следующему шагу нажмите кнопку Next (Далее).

Определение категории и рядов данных



Рис. 10.13. Определение категории и рядов данных




Определение типа диаграммы



Рис. 10.14. Определение типа диаграммы


В последнем диалоговом окне мастера (рис. 10.15) введите заголовок диаграммы и установите флажок добавления в диаграмму легенд (то есть условных обозначений рядов данных). Используя кнопку Preview (Просмотр), просмотрите результат своей работы. Еще не поздно вернуться к предыдущим шагам в работе мастера и изменить установленные там параметры. После этого, используя расположенные в окне опции (табл. 10.5), укажите дальнейшие ваши действия.

Завершающая стадия создания диаграммы



Рис. 10.15. Завершающая стадия создания диаграммы




Созданный запрос можно использовать для построения диаграммы



Рис. 10.16. Созданный запрос можно использовать для построения диаграммы


Запустите запрос на выполнение. Мастер вызывает программу Microsoft Graph, в которую передает результаты выборки и параметры диаграммы. В появившемся окне укажите, где вы хотите сохранить созданную форму. На рис. 10.17 показана диаграмма, созданная с помощью мастера.

Совет
Совет

Может оказаться, что запрос не создает диаграмму. Это возможно, если не определена системная переменная _gengraph. В этом случае задайте переменную, указав полный путь к файлу wzgraph.app, введя, например, в командном окне

_GENGRAPH = 'C:\Program FilesNMicrosoft Visual FoxPro 8\ Wizards\wzgraph.app'.

Диаграмма сохранена в форме. Вы можете открыть форму, изменить тип диаграммы или отформатировать ее элементы. Для подробного ознакомления с этими возможностями обратитесь к справочной системе Microsoft Graph или руководству пользователя.

Чтобы перейти в режим редактирования диаграммы, выделите диаграмму и выберите из контекстного меню команду Диаграмма Object, а затем команду Изменить. Теперь вы можете приступить к изменению ее параметров.



Диаграмма распределения клиентов по городам



Рис. 10.17. Диаграмма распределения клиентов по городам




Круговая диаграмма распределения клиентов по городам



Рис. 10.18. Круговая диаграмма распределения клиентов по городам


Замечание
Замечание

В режиме редактирования можно настраивать самые разнообразные параметры диаграммы: формат отображения данных, заголовок диаграммы, надписи осей, параметры сетки, шрифт, формат выводимых значений, числовые данные, используемые при ее создании и т. п.

Созданная нами диаграмма является одномерной. Для исходной таблицы вы можете также построить круговую диаграмму, которая позволяет увидеть относительный вклад каждой из величин в итоговое значение (рис. 10.18). Каждому элементу данных на диаграмме соответствует сектор круга, а суммарному значению — весь круг.





Трехмерная диаграмма, построенная для таблицы Salereg



Рис. 10.19. Трехмерная диаграмма, построенная для таблицы Salereg


На первом шаге выберите таблицу salereg и поля, содержащие кол товара и объемы продаж по городам. Чтобы диаграмма была более наглядной. ограничьтесь выбором нескольких городов. Нажмите кнопку Next (Далее). Перенесите поле, содержащее наименование города, в область Axis (Ось), а объемы продаж по городам — в Data Series (Ряд данных). Укажите тип создаваемой диаграммы и нажмите кнопку Next (Далее) для перехода к завершающей стадии создания диаграммы с помощью мастера. Введите заголовок диаграммы: Продажи товаров.

Созданная диаграмма будет иметь вид, представленный на рис. 10. 19.





Создание диаграммы с помощью мастера Graph Wizard



Создание диаграммы с помощью мастера Graph Wizard

Для построения диаграммы воспользуемся одномерной перекрестной таблицей cntcust, отображающей распределение клиентов по городам. О ней упоминалось в начале данной главы.

На первом шаге создания диаграммы с помощью мастера указывается таблица, для которой строится диаграмма. Это может быть таблица из базы данных или выборка из нескольких таблиц. После выбора полей, используемых при создании диаграммы, вызывается приложение wzgraph.app. Это приложение передает выбранные данные в Microsoft Graph и на их основе создается диаграмма указанного вами типа.

Рассмотрим создание диаграммы с помощью мастера более подробно:

В меню File (Файл) выберите команду New (Новый). В диалоговом окне New (Новый) укажите тип создаваемого объекта Query (Запрос) и нажмите кнопку Wizard (Мастер). Из диалогового окна Wizard Selection (Выбор мастера) запустите мастера создания диаграммы, выбрав значение Graph Wizard (Мастер диаграмм). На первом шаге работы мастера выберите исходную таблицу Спссизс и поля, которые будут использоваться при создании диаграммы (рис. 10.12). Рассматриваемая исходная таблица содержит всего два ноля. Выберите их.

Совет
Совет

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



Создание перекрестной таблицы с помощью мастера



Создание перекрестной таблицы с помощью мастера

В Visual FoxPro для создания перекрестной таблицы можно использовать мастер Cross-Tab Wizard (Мастер построения перекрестных таблиц). В появляющемся после запуска мастера диалоговом окне необходимо указать исходную таблицу, которая может быть таблицей из базы данных или являться результатом выборки данных из нескольких таблиц. Мастер на основе исходной таблицы создает итоговую выборку, в которой группирует и сортирует данные по полям, используемым в качестве строки и столбца перекрестной таблицы, а также вычисляет суммарное значение по заданному полю данных. Затем Visual FoxPro вызывает программу vfpxtab.prg, наименование которой хранится в системной переменной _genxtab.

Чтобы продемонстрировать возможности мастера по созданию перекрестной таблицы, воспользуемся таблицей salegGods.

Для создания перекрестной таблицы с помощью мастера выполните следующие действия:

В меню File (Файл) выберите команду New (Новый). В диалоговом окне New (Новый) выберите тип создаваемого объекта Query (Запрос) и нажмите кнопку Wizard (Мастер). Из диалогового окна Wizard Selection (Выбор мастера) запустите мастера создания перекрестной таблицы, выбрав Cross-Tab Wizard (Мастер построения перекрестных таблиц).

Замечание
Замечание

Для запуска мастера создания перекрестной таблицы можно также в меню Tools (Сервис) выбрать команду Wizard (Мастер), а затем — значение Query (Запрос). При этом открывается диалоговое окно Wizard Selection (Выбор мастера).

В первом окне мастера (рис. 10.4) выберите исходную таблицу saieGoods и все три поля, которые будут использоваться в качестве строки, столбца и поля данных перекрестной таблицы. Для перехода к следующему шагу нажмите кнопку Next (Далее).

Создание трехмерных диаграмм



Создание трехмерных диаграмм



Назначение опций области Summary



Таблица 10.1. Назначение опций области Summary

Опция

Назначение

Sum (Сумма)

Итоговые значения равны сумме значений для каждой пары строка/столбец

Count (Количество)

Итоговые значения равны количеству значений для каждой пары строка/столбец

Average (Среднее)

Итоговые значения равны среднему значению для каждой пары строка/столбец

Мах (Наибольшее)

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

Min (Наименьшее)

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

Оставьте установленную по умолчанию опцию Sum.



Назначение опций области Subtotals



Таблица 10.2. Назначение опций области Subtotals

Опция

Назначение

Sum of data (Сумма данных)

Итоговые значения равны сумме значений для текущей строки

Number of cells containing data (Число ячеек, содержащих данные)

Итоговые значения равны количеству ячеек, содержащих значения

Percentage of the table total (Процент от итоговой суммы)

Итоговые значения равны сумме значений для текущей строки, выраженной в процентах по отношению к итоговой сумме

None (Нет)

Итоговый столбец не создается

Установите опцию Percentage of the table total (Процент от итоговой суммы). Для перехода к завершающей стадии создания перекрестной таблицы нажмите кнопку Next (Далее).

На последнем шаге работы мастера (рис. 10.8) вы можете просмотреть результаты, нажав кнопку Preview (Просмотр). Воспользуйтесь этой возможностью и убедитесь, что правильно установили все параметры.

Мастер сохраняет созданную перекрестную таблицу



Таблица 10.3. Назначение опций диалогового окна Cross-Tab Wizard — Step 4

Опция

Назначение

Save cross-tab query (Сохранить перекрестную таблицу в запросе)

Мастер сохраняет созданную перекрестную таблицу в запросе

Save and run cross-tab query (Сохранить перекрестную таблицу в запросе и запустить)

Мастер сохраняет созданный запрос и запускает его на выполнение

Save cross-tab query and modify in the Query Designer (Сохранить перекрестную таблицу и открыть для модификации в конструкторе запросов)

Мастер сохраняет созданный запрос и открывает его в окне конструктора запросов

Выберите третий вариант и нажмите кнопку Finish (Готово). Мастер завершит работу и откроет созданный запрос в окне конструктора. Просмотрите SQL-оператор. Для этого в меню Query (Запрос) выберите команду View SQL (Показать SQL).

Запрос, созданный с помощью мастера, содержит конструкцию для выборки данных, вызов программы, формирующей перекрестную таблицу, и команду просмотра таблицы в режиме Browse (Просмотр):

SELECT SaleGoods.Код_товара, SaleGoods.Город, SUM(SaleGoods.Сумма);

FROM 'SaleGoods.DBF' SaleGoods;

GROUP BY SaleGoods.Код_товара, SaleGoods.Город;

ORDER BY SaleGoods.Код_товара, SaleGoods.Город;

INTO CURSOR SYS(2015)

DO (_GENXTAB) WITH 'Query',.t.,.t.,.t.,,,,.t.,2,.t.

BROWSE NOMODIFY

Результат запроса аналогичен приведенному на рис. 10.3.



Параметры программы, создающей перекрестные таблицы



Таблица 10.4. Параметры программы, создающей перекрестные таблицы

Порядковый номер параметра

Назначение

Значение по умолчанию

1

Имя выходного файла или курсора

xtab.dbf

2

Признак создания только курсора

True

3

Признак закрытия исходной таблицы при выходе из программы

True

4

Признак отображения индикатора работы программы

True

5

Номер поля, являющегося строкой перекрестной таблицы

1

6

Номер поля, являющегося столбцом перекрестной таблицы

2

7

Номер поля, являющегося полем данных перекрестной таблицы

3

8

Признак формирования итогового поля

False

9

Тип вычисления итогового поля (0 — сумма, 1 — количество, 2 — доля от итогового значения в процентах)

Воспользуемся программой vfpxtab. prg для представления итогового объема продаж товара по месяцам в виде перекрестной таблицы.

В окне конструктора запросов создайте запрос, используя таблицы ordsalem и ordsaled. Разместите в итоговых полях код товара, месяц продажи и стоимость проданного товара. Установите группировку данных по коду товара, месяцу продажи и упорядочение данных по коду товара. Просмотрите созданный запрос и убедитесь, что он правильно осуществляет выборку данных из таблиц. Откройте диалоговое окно, в котором отображается SQL-оператор, соответствующий созданному вами запросу. Для этого в меню Query (Запрос) выберите команду View SQL (Показать SQL). Скопируйте SQL-оператор в буфер обмена Windows. Откройте новое окно редактора программ. Для этого перейдите на вкладку Code (Код) конструктора проекта, установите курсор в группу Programs (Программы) и нажмите кнопку New (Новый). В открывшемся окне новой программы разместите из буфера обмена конструкцию select, определяющую итоговые ежемесячные продажи. Добавьте в вашу программу вызов программы генерации перекрестной таблицы:

SELECT SaleMon

DO (_GENXTAB) WITH 'SMon',.F.,.T.,.T.,,,,.T.,2

После размещения в программе всех необходимых команд она будет иметь вид, представленный на рис. 10.9.



Назначение опций диалогового окна Graph



Таблица 10.5. Назначение опций диалогового окна Graph Wizard — Step 4

Опция

Назначение

Save graph to a form (Сохранить диаграмму в форме)

Сохраняет созданную диаграмму в форме и открывает ее в конструкторе для редактирования

Save graph to a table (Сохранить диаграмму в таблице)

Сохраняет созданную диаграмму в таблице, содержащей поле типа General

Create a query what produces the graph (Создать запрос, который формирует диаграмму)

Сохраняет созданный запрос и открывает его в окне конструктора запросов

Выберите, например, третий вариант и нажмите кнопку Finish (Готово). Мастер сохранит запрос с заданным именем и откроет окно конструктора с созданным запросом. Тело запроса содержит конструкцию select и команду вызова приложения создания диаграммы (рис. 10.16).



Таблица была получена из таблиц...



Таблица была получена из таблиц Customer, Ordsalem и ordsaied с помощью многотабличного запроса. Для наглядности результирующим полям запроса присвоены русскоязычные названия.

SELECT Customer. cCity AS Город, Ordsaied. icdGoods AS Koд товара, ;

SUM(Ordsaled.nQuant*Ordsaled.nUnitprice) AS Сумма;

FROM Sales!Customer INNER JOIN Sales!Ordsalem;

INNER JOIN Sales!Ordsaied ;

ON Ordsalem.icdOrder = Ordsaled.icdOrder ;

ON Customer.icdCustomer = Ordsalem.icdCustomer;

GROUP BY Customer.cCity, Ordsaled.icdGoods;

INTO TABLE SaleGoods.dbf



Таблица cntcust содержит всего...



Таблица cntcust содержит всего одно числовое поле, поэтому диаграмма, показанная на рис. 10.18, представляет собой простейшую диаграмму. Для построения более сложной диаграммы обратимся к перекрестной таблице Salereg.

Для создания диаграммы выполните следующие действия:

Запустите мастера создания диаграммы Graph Wizard (Мастер диаграмм).