В Visual FoxPro имеются мощные средства анализа большого объема информации, хранящегося в базе данных в одной или нескольких таблицах —диаграммы и перекрестные таблицы.
Отображение данных в виде диаграмм и графиков позволяет решать самыеразные задачи. Основное достоинство такого представления — наглядность.На диаграммах хорошо просматриваются тенденции к изменению, различные соотношения, прирост, взаимосвязь различных процессов и т. д.
Но, как правило, таблицы не подготовлены для создания диаграмм. Данныев них представлены в виде нескольких составляющих, расположенных вбольшом количестве записей. Диаграмма, построенная для такой таблицы,будет иметь вид, который трудно использовать для анализа. Поэтому, прежде чем строить диаграмму, информацию необходимо преобразовать к виду,наиболее приемлемому для построения диаграмм. Для этого в Visual FoxProиспользуются перекрестные таблицы и итоговые запросы.
Перекрестная таблица - это таблица, в которой информация группируется всоответствии со значениями одного или нескольких полей и фактическиприводится к виду, аналогичному электронной таблице.
В Visual FoxPro для построения диаграмм используется Microsoft Graph.Помимо этого, для построения диаграмм из подготовленных в Visual FoxProданных вы можете использовать Microsoft Excel и другие электронные таблицы, имеющиеся в среде Windows.
Перекрестная таблица в Visual FoxPro имеет вид, похожий на электроннуютаблицу. Но, в отличие от последней, вам не нужно вручную заполнять каждую ячейку таблицы, предварительно определив ее значение. Visual FoxProавтоматически разбивает данные на группы в соответствии с одним или несколькими факторами и выполняет итоговые вычисления над данными,включенными в группу. После чего информация, полученная в результатегрупповых вычислений, сортируется и заносится в перекрестную таблицу.Например, используя перекрестную таблицу, вы можете определить, сколько клиентов фирмы проживает в том или ином районе города или как распределяются между ними проданные товары. Очевидно, что каждый клиентможет покупать один и тот же товар несколько раз. Получить такие сведения без создания перекрестной таблицы достаточно трудно.
При работе с Visual FoxPro вы можете использовать одномерные и многомерные перекрестные таблицы. Для создания простейших одномерных перекрестных таблиц применяйте обычный итоговый запрос. Для построениядвумерных и более сложных перекрестных таблиц в Visual FoxPro используется мастер создания перекрестных таблиц Cross-Tab Wizard (Мастер построения перекрестных таблиц).
Прежде чем приступить непосредственно к созданию перекрестной таблицы, вы должны определить, какой тип перекрестных таблиц в наибольшейстепени подходит к выполнению текущей задачи.
Одномерные перекрестные таблицы
Простейшим типом перекрестной таблицы является одномерная перекрестная таблица, используемая для анализа распределения данных одного типапо одному фактору.
Рис. 10.1. Одномерная перекрестная таблица
Рассмотрим создание перекрестной таблицы, отображающей распределениеклиентов по городам (рис. 10.1). Исходная информация содержится в таблице Customer.
Двумерные перекрестные таблицы
Информация в двумерных перекрестных таблицах группируется по двумфакторам. Примером такой таблицы является Saiegoods, представленная нарис. 10.2. Она содержит сведения о стоимости проданных товаров по городам. Данная таблица была получена из таблиц customer, ordsaiem иordsaied с помощью многотабличного запроса. Для наглядности результирующим полям запроса присвоены русскоязычные названия.
SELECT Customer.cCity AS Город, Ordsaied.icdGoods AS Код_товара,;
SUM{Ordsaied.nQuant*Ordsaled.nUnitprice) AS Сумма;
FROM Sales!Customer INNER JOIN Sales!Ordsaiem;
INNER JOIN Sales!Ordsaied ;
ON Ordsaiem.icdOrder = Ordsaied.icdOrder ;
ON Customer.icdCustomer = Ordsaiem.icdCustomer;
GROUP BY Customer.cCity, Ordsaied.icdGoods;
INTO TABLE saleGoods.dbf
В таблице, представленной на рис. 10.2, отображается вся необходимая информация о продажах товаров, однако более удобным для анализа являетсяпредставление этой информации в виде перекрестной таблицы. На рис. 10.3представлена двумерная перекрестная таблица, созданная на основе таблицы Saiegoods.
Рис. 10.2. Таблица Salegoods
Рис. 10.3. Двумерная перекрестная таблица
Числа в ячейках таблицы соответствуют стоимости проданного товара длякаждой пары уникальных значений "код товара/город". Значения поля, содержащего наименование города, расположены в верхней строке таблицы, азначения поля, обозначающего код проданного товара, — в левом столбцетаблицы. Сохраните таблицу с именем salereg. Ее можно будет использовать при создании трехмерных диаграмм.
Создание перекрестной таблицыс помощью мастера
В Visual FoxPro для создания перекрестной таблицы можно использоватьмастер Cross-Tab Wizard (Мастер построения перекрестных таблиц). В появляющемся после запуска мастера диалоговом окне необходимо указать исходную таблицу, которая может быть таблицей из базы данных или являтьсярезультатом выборки данных из нескольких таблиц. Мастер на основе исходной таблицы создает итоговую выборку, в которой группирует и сортирует данные по полям, используемым в качестве строки и столбца перекрестной таблицы, а также вычисляет суммарное значение по заданному полюданных. Затем Visual FoxPro вызывает программу vfpxtab.prg, наименование которой хранится в системной переменной _GENXTAB.
Чтобы продемонстрировать возможности мастера по созданию перекрестнойтаблицы, воспользуемся таблицей Salegoods.
Для создания перекрестной таблицы с помощью мастера выполните следующие действия:
Замечание
Для запуска мастера по созданию перекрестной таблицы можно также в менюTools (Сервис) выбрать команду Wizard (Мастер), а затем — значение Query(Запрос). При этом открывается диалоговое окно Wizard Selection (Выбор мастера).
Рис. 10.4. Выбор исходной таблицы и полей
Рис. 10.5. Определение строк, столбцов и поля данных
Перенесите поле город в область Column (Колонка), поле код_товара —в область Row (Ряд) и поле сумма — в область Data (Данные). Послеэтого диалоговое окно будет выглядеть так, как показано на рис. 10.6.Нажмите кнопку Next (Далее) для перехода к следующему шагу.
Рис. 10.6. Диалоговое окно после определения строк,столбцов и поля данных
Таблица 10.1. Назначение группы переключателей Summaryдиалогового окна Cross-Tab Wizard Step 3
Переключатель | Назначение |
Sum (Сумма) | Итоговые значения равны сумме значений для каждой парыстрока/столбец |
Count (Количество) | Итоговые значения равны количеству значений для каждойпары строка/столбец |
Average (Среднее) | Итоговые значения равны среднему значению для каждойпары строка/столбец |
Мах (Наибольшее) | Итоговые значения равны наибольшему из всех значений длякаждой пары строка/столбец |
Min (Наименьшее) | Итоговые значения равны наименьшему из всех значенийдля каждой пары строка/столбец |
Установите опцию Sum.
Рис. 10.7. Определение типа группировки и итогового столбца
Таблица 10.2. Назначение группы переключателей Subtotalsдиалогового окна Cross-Tab Wizard Step 3
Переключатель | Назначение |
Sum of data (Сумма данных) | Итоговые значения равны сумме значений длятекущей строки |
Number of cells containingdata (Число ячеек, содержащих данные) | Итоговые значения равны количеству ячеек, содержащих значения |
Percentage of the table total (Процент от итоговой суммы) | Итоговые значения равны сумме значений длятекущей строки, выраженной в процентах по отношению к итоговой сумме |
None (Нет) | Итоговый столбец не создается |
Установите опцию Percentage of the table total (Процент от итоговой суммы). Для перехода к завершающей стадии создания перекрестной таблицы нажмите кнопку Next (Далее).
Выберите третий вариант и нажмите кнопку Finish (Готово). Мастер завершит работу и откроет созданный запрос в окне конструктора. Просмотрите SQL-оператор. Для этого в меню Query (Запрос) выберите команду ViewSQL (Показать SQL).
Рис. 10.8. Завершающая стадия создания перекрестной таблицы
Таблица 10.3. Назначение переключателей диалогового окна Cross-Tab Wizard Step 4
Переключатель | Назначение |
Save cross-tab query (Сохранить перекрестную таблицу в запросе) | Мастер сохраняет созданный запрос |
Save and run cross-tab query (Сохранитьперекрестную таблицу в запросе и запустить) | Мастер сохраняет созданный запроси запускает его на выполнение |
Save cross-tab query and modify in theQuery Designer (Сохранить перекрестнуютаблицу и открыть для модификации в конструкторе запросов) | Мастер сохраняет созданный запроси открывает его в окне конструкторазапросов |
Запрос, созданный с помощью мастера, содержит конструкцию для выборкиданных, вызов программы, формирующей перекрестную таблицу, и командупросмотра таблицы в режиме 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.,0,.t.
BROWSE NOMODIFY
Результат запроса аналогичен приведенному на рис. 10.3.
Программа создания перекрестной таблицы
Мастер перекрестных таблиц использует в своей работе программуVFPXTAB.PRG. Эту программу вы можете вызывать из ваших программ,предварительно подготовив и открыв в текущей области требуемую таблицу.
Для работы программы, создающей перекрестную таблицу, необходимо определить используемые в ней параметры (табл. 10.4).
Таблица 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 для представления итоговогообъема продаж товара по месяцам в виде перекрестной таблицы.
SELECT SaleMon
DO (_GENXTAB) WITH 'SMon',.F.,.T.,.T.,,,, .T.,2
После размещения в программе всех необходимых команд она будетиметь вид, представленный на рис. 10.9.
Рис. 10.9. Завершающая стадия создания перекрестной таблицы
Рис. 10.10. Итоговые ежемесячные объемы продаж товаров
Совет
При создании выборки вы можете для определения имени месяца вместо егономера использовать подготовленную заранее функцию. Однако в этом случаепри упорядочении выборки по месяцам в перекрестной таблице названия месяцев будут расположены в алфавитном, а не в хронологическом порядке.
Созданную в Visual FoxPro перекрестную таблицу вы можете использовать впрограммах управления электронными таблицами, таких как Microsoft Excel,Lotus 1-2-3 и т. д. Для этого вы должны ее экспортировать в формат той электронной таблицы, в которой будет осуществляться дальнейшая обработка.
Для экспорта данных предназначена команда Export (Экспорт) из меню File(Файл). В результате выполнения этой команды открывается диалоговое окно Export (Экспорт) (рис. 10.11), в котором вы должны указать исходнуютаблицу, задать формат данных, имя выходного файла, а затем нажать кнопку ОК.
Рис. 10.11. Диалоговое окно Export
Для визуального анализа данных, хранящихся в таблицах Visual FoxPro, выможете использовать диаграммы.
В распоряжение разработчика Visual FoxPro предоставляет двенадцать типовдиаграмм. Вам необходимо правильно определиться с ее типом, т. к. одну иту же информацию можно представить с помощью диаграмм разных типов.
Для построения диаграмм в Visual FoxPro используется программа MicrosoftGraph, данные в которую передаются с помощью мастера построения диаграмм или с использованием приложения WZGRAPH.APP.
Создание диаграммы с помощьюмастера Graph Wizard
Для построения диаграммы воспользуемся одномерной перекрестной таблицей CNTCUST, отображающей распределение клиентов по городам. О нейупоминалось в начале данной главы.
На первом шаге создания диаграммы с помощью мастера указывается таблица, для которой строится диаграмма. Это может быть таблица из базыданных или выборка из нескольких таблиц. После выбора полей, используемых при создании диаграммы, вызывается приложение WZGRAPH.APP.Это приложение передает выбранные данные в Microsoft Graph и на их основе создается диаграмма указанного вами типа.
Рассмотрим создание диаграммы с помощью мастера более подробно.
Совет
Если исходная таблица содержит много полей, вы можете ограничить количество выбираемых полей, т. к. при большом количестве полей диаграмма получается недостаточно наглядной и ее трудно анализировать.
Рис. 10.12. Выбор исходной таблицы и полей
Завершив выбор полей, нажмите кнопку Next (Далее).5. В следующем диалоговом окне мастера (рис. 10.13) выполните действия:
Для этого перенесите поле город исходной таблицы в область Axis (Ось),а поле количество — в область Data Series (Ряд данных) диалогового окна. Затем нажмите кнопку Next (Далее).
Рис. 10.13. Определение категории и рядов данных
Рис. 10.14. Определение типа диаграммы
Таблица 10.5. Назначение переключателей диалогового окна Graph Wizard Step 4
Переключатель | Назначение |
Save graph to a form (Сохранитьдиаграмму в форме) | Сохраняет созданную диаграмму в форме |
Save graph to a table (Сохранитьдиаграмму в таблице) | Сохраняет созданную диаграмму в таблице,содержащей поле типа General |
Create a query that produces thegraph (Сохранить и создать длядиаграммы запрос) | Сохраняет созданный запрос и открывает егов окне конструктора запросов |
Выберите третий вариант и нажмите Finish (Готово). Мастер сохранит запрос с заданным именем и откроет окно конструктора с созданным запросом. Тело запроса содержит конструкцию SELECT и команду вызоваприложения создания диаграммы.
Рис. 10.15. Завершающая стадия создания диаграммы
Диаграмма сохранена в форме. Вы можете открыть форму, изменить типдиаграммы или отформатировать ее элементы. Для подробного ознакомления с этими возможностями обратитесь к справочной системе MicrosoftGraph или руководству пользователя.
Чтобы перейти в режим редактирования диаграммы, выделите диаграмму ивыберите из контекстного меню команду Chart Object (Объект "диаграмма"),а затем команду Edit (Правка). Теперь вы можете приступить к изменениюее параметров.
Рис. 10.16. Диаграмма распределения клиентов по городам
Рис. 10.17. Круговая диаграмма распределения клиентов по городам
Замечание
В режиме редактирования можно настраивать самые разнообразные параметры диаграммы: формат отображения данных, заголовок диаграммы, надписиосей, параметры сетки, шрифт, формат выводимых значений и т. п.
Созданная нами диаграмма является одномерной. Для исходной таблицы выможете также построить круговую диаграмму, которая позволяет увидетьотносительный вклад каждой из величин в итоговое значение (рис. 10.17).Каждому элементу данных на диаграмме соответствует сектор круга, а суммарному значению — весь круг.
Таблица CNTCUST содержит всего одно числовое поле, поэтому диаграмма,показанная на рис. 10.17, представляет собой простейшую диаграмму. Дляпостроения более сложной диаграммы обратимся к перекрестной таблице SALEREG.
Рис. 10.18. Трехмерная диаграмма,построенная для таблицы SALEREG
Для создания диаграммы выполните следующие действия:
Созданная диаграмма будет иметь вид, представленный на рис. 10.18.