Страница 1 из 1

Не могу разобраться с группировкой...

Добавлено: 03 авг 2005, 09:04
Natalika
Добрго времени суток всем!

Пишу отчет (свой интерфейс), выкидываю его в ексел. В этом отчете куча итогов по пяти полям т.е. соответственно пять группировок...
Самой отслеживать изменение каждого поля и подсчитывать сумму как то не охота :? В SDK вычитала что есть группировка из VIP.
Вот пример от туда....

_loop aTable
{
оператор1
groupby g1 : aTable f1
{
оператор2
groupby g2 : aTable f2
{
оператор3
}
оператор4
}
оператор5
}

Что то у меня не получается... компилятор ругается на GROUPBY.
Может кто знает как этим пользоваться... или что то нуно еще подключить...

Добавлено: 03 авг 2005, 11:26
san
А внизу написано:
Информация
Версия : Атлантис 5.03

Добавлено: 03 авг 2005, 11:45
Natalika
Вот блин действительно... что то я не доглядела... :oops:
Ну да ладно... А как быть может кто нибудь подскажет как мне быть... :roll: Как вообще люди пишут отчеты такого рода... Неужели Вы сами отслеживаете изменение полей!!! :shock: :shock: :shock:

Добавлено: 03 авг 2005, 11:52
Goblin
как, как ?
Временная табла-аккумулятор и в ней группировку ...

Добавлено: 03 авг 2005, 12:14
Natalika
Goblin я прошу прошения... за свое незнание

Я то и формирую данные для отчета во временную талицу... И что мне дальше с ней делать??? как мне ее группировать???

Добавлено: 03 авг 2005, 12:15
san
С использованием временной таблицы. В 5.03 подозреваю что технология эта же, только делается за кадром.

Добавлено: 03 авг 2005, 12:17
san
Сделать у временной таблицы составной индекс = количеству уровней группировки.

Добавлено: 03 авг 2005, 12:37
san
Еще вариант на внешней выгрузке (order Name EXTERNAL by ....), в данном случае нет необходимости описывать временную таблицу. Драйвер сам сделает временную таблиц,у в выгрузит в нее все записи из логической таблицы и отсортирует. Опять же вариант сводится в врем таблице где данные расположены в нужном порядке.
Оработка простая, берем первую запись, запоминаем все поля которые участвуют в группировке.Делаем цикл по таблице, опять с первой записи. и первым делом проверяем не изменилось ли какое либо поле из тех что участвуют в группировке. Если изменилось выводим итоги по уровню.
типа
if pole1<>storepole1
{
printitog1;
storepole1:=pole1
}
if pole2<>storepole2
{
printitog2;
storepole2:=pole2
}
когда все записи таблицы обработаны выводим итоги по всем уровням.

Добавлено: 03 авг 2005, 13:01
Natalika
ну вот...
"Всю ночь гребли а лодку отвязать забыли..."

плохо что только так... пока можно... уууу как неудобно!

Добавлено: 03 авг 2005, 13:08
san
В форме INV_VED.FRM есть пример с group by.