Отчетик с помесячной разбивкой

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Отчетик с помесячной разбивкой

Сообщение GTHack »

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

что то типа того:

Отчет по продажам за период
с дата1 по дата2.
-------------------------------------------
месяц1 месяц2 ... месяцN Итог
1. Мц1 100 0 ... 100 ИтогМЦ1
........
2. МцN 500 0 ... 0 ИтогМЦN

кто нибудь подобное делал ?
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: Отчетик с помесячной разбивкой

Сообщение GTHack »

на данный момент делаю накоплением с использованием таблы памяти, что то типа следующего

Если в табле есть такая запись где Месяц(дата (перебираемый документ)) = Месяц (таблы памяти)
то
накаливаемая_сумма (табла памяти) := накаливаемая_сумма (табла памяти) + сумма (перебираемый документ)
иначе
добавить в таблу памяти строку где
Месяц (таблы памяти) := Месяц(дата (перебираемый документ)),
накаливаемая_сумма (табла памяти) := сумма (перебираемый документ)

и потом соответственно кучей выводится
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: Отчетик с помесячной разбивкой

Сообщение GTHack »

работает - но медленно,
раньше подобный отчет работал под акцессом
(так же с помесячной горизонтальной разбивкой) ощутимо быстрее, чем мой на ВИПе.
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Re: Отчетик с помесячной разбивкой

Сообщение Goblin »

таблы в памяти - самое быстрое ...
в данном случае 3 таблы - группировка МЦ/Месяц(для ячеек),МЦ(строки и итоги по ним),Месяца(столбцы и итоги по ним) ...
прошарился по нужным таблицам , таблы забил ...
потом в форме
1) горизонтальный цикл с названиями месяцев для шапки
2) вертикальный по МЦ
3) внутри вертикального еще раз горизонтальный по месяцу - если есть такая комбинашка МЦ/месяц - из таблы группировки МЦ/месяц число , нет - нолик .в конце горизонтального - итог по МЦ из таблы по МЦ
4) еще один горизонтальный по месяцу - итоги месяцам ...
с чего вдруг тормозить должно ?

или поди скидывал в Акцесс уже готовую группировку МЦ/месяц ?
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Отчетик с помесячной разбивкой

Сообщение Den »

Я нечто подобное делал месяц назад, но без всяких горизонтальных циклов. Все периоды хранил в массиве. Т.е. в начале, когда юзверь задает диапозон дат, наполняется массив :


var
databeg :array [1..24] of date ;
dataend :array [1..24] of date ;


Rundialog(getinterval,d_beg,d_end);

beg_mes_point :=month(d_beg);
beg_year_point:=year(d_beg);
end_mes_point :=month(d_end);
end_year_point:=year(d_end);


while (word(beg_mes_point)+(beg_year_point*12))<=(word(end_mes_point)+(end_year_point*12))
do
{
s:=s+1;
databeg[s]:=date(if(s=1,day(d_beg),1),beg_mes_point,beg_year_point);
dataend[s]:=date(if(word(beg_mes_point)+(beg_year_point)=
(word(end_mes_point)+end_year_point),day(d_end),
last_day(date(1,beg_mes_point,beg_year_point))),
beg_mes_point,beg_year_point);

beg_mes_point :=beg_mes_point+1;

if (beg_mes_point mod 13)=0
{
beg_mes_point :=1;
beg_year_point:=beg_year_point+1;
}
}

Далее последовательно выгребаю все это дело в таблу в памяти. И также потом последовательно обрабатывая периоды вывожу в XLS - отчет.
В общем все работает удовлетворительно. Кол-во спецификации к отгрузке - около 10000 записей.Начальный этап выборки данных (просмотр всех записей и накопление итогов по каждой МЦ (их около 2000 шт.) и заполнение таблы в памяти) в районе 45 секунд выполяется...
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: Отчетик с помесячной разбивкой

Сообщение GTHack »

>Туманов О.В.
я впринципе так и делаю, единственно не 3 а 2 таблы памяти использую, а в общем один к одному - с 3мя таблами идея понравилась - перепишу + подумаю над оптимизацией кода, т.к. думаю даже теоретически в акцессе быстрее быть не может чем на ВИПе.

>DEN
с использованием массивов идея ясна, но думаю таблами будет гибче, заинтересовал момент вывода в XLS
ты выводиш xl-функциями или в SLK ?

если xl-функциями, то наверняка матричными функциями - если так, то мог бы кусок кода на мыло бросить ?
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Ответить