Н. 3. Епманова. C++Builder 3.0, архитектура "клиент/сервер" и Internet
поля ShipVia, Terms, PaymentMethod, а в качестве полей для построения агрегатных данных - AmountPaid и ItemsTotal). Если кросс-таблица будет строиться на основании многотабличного запроса, можно нажать на кнопку SQL Builder и визуально построить соответствующий запрос (рис. 6.14).
Рис. 6.14. Выбор базы данных и таблицы для создания кросс-таблиц
Далее следует образовать оси куба. Для этого нужно выбрать подходящее поле из списка в левой части формы и нажать на кнопку со стрелкой вправо возле списка Dimensions. Операцию надо повторить столько раз, сколько осей должно быть у куба. В нашем случае это могут быть поля ITEM, SALESMAN, PAY_METHOD, VENDOR, SALE_DATE.
Затем необходимо выбрать, какие значения нужно отобразить в ячейках. С этой целью следует выбрать поле, значения которого используются для получения агрегатных данных, нажать на кнопку со стрелкой вправо возле списка Summaries и в появившемся меню выбрать одно из значений -sum, count или average.
Возникает вопрос: а как же быть с максимальными и минимальными значениями? Тут можно посоветовать следующее. Щелкнув левой клавишей мыши по закладке SQL Query, можно перейти на страницу с текстом SQL-запроса, сгенерированного автоматически в результате выбора полей, и внесц^ правки в его текст, например вставив вручную текст "MAX(PAYMENT)" (рис. 6.15).
120
Новые компоненты для работы с базами данных
Рис. 6.15. Редактирование автоматически сгенерированного SQL-запроса
В результате мы получим описание размерностей куба и агрегатных ханных, расположенных в его ячейках (рис. 6.16).
Рис. 6.16. Описание размерностей и агрегатных данных
121