Delphi 3 и создание приложений баз данных


15.6. Использование компонента TDecisionQuery


Разместим в форме компонент TDecisionQuery с именем DecisionQuery1. Установим в свойство Database компонента имя базы данных (в нашем случае это loc_skld). В свойстве SQL определим оператор SELECT, в котором произведем внутреннее соединение таблиц Rashod, Tovary и Pokup:

SELECT P.GOROD, R.РОКUР,Т.TYP_TOVARA, R.TOVAR, R.MES,

SUM( R.KOLVO * T.ZENA) , AVG( R.KOLVO * T.ZENA)

FROM "Rashod.DB" R, "Pokup.DB" P, "Tovary.DB" T

WHERE R.POKUP= P.POKUP AND

T.TOVAR = R.TOVAR

GROUP BY P.GOROD, R.POKUP, TYP_TOVARA, R.TOVAR, R.MES

GROUP BY P.GOROD, R.POKUP, TYP_TOVARA, R.TOVAR, R.MES

Существуют следующие правила объявления измерений в многомерном кубе:

1. поля, по которым должны строиться измерения многомерного куба, перечисляются после ключевого слова SELECT;

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

3. только после полей-источников для измерений куба перечисляются агрегатные выражения - сумма, среднее, и число повторений;

агрегированные данные затем будут выводиться по указанным ранее измерениям;

4. обязательно использование раздела ORDER BY, где необходимо перечислить все поля, по которым строятся измерения куба, причем в том же порядке, в котором они следуют после ключевого слова SELECT.

Рассмотрим приведенный выше оператор SELECT. Измерения будут построены по полям:

1.GOROD;

2. POKUP;

3. TYP_TOVARA;

4.TOVAR;

5. MES.

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

1. суммарная стоимость отпущенного товара (KOLVO * ZENA);

2. средняя стоимость отпущенного товара (KOLVO * ZENA).

Компонент TDecisionQuery настолько "похож" на компонент TQuery, что не имеет отличных от него, уникальных свойств, методов и событий. Установим значение True в свойство компонента Active. Теперь набор многомерных данных активен в нашем приложении.




Начало  Назад  Вперед



Книжный магазин