Готовые средства vs ручная реализация
Использовал Fast Reort v. 2.47
Есть отчет следующего вида:
груповая запись #1 (group header)
ключевое поле -> 1 запись #1 (master data) куча полей в кждой записи..
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #1) (group footer)
груповая запись #2
1 запись #1 (master data)
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #2)
* * * *
груповая запись #n
1 запись #1 (master data)
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #n)
сумма(по всем груповым записям от 1 по #n) (summary)
Я создал его за пару минут накидав нужных бэндов.... но это еще не все...
требовалось дополнить этот отчет некторыми расчетами и расположить их в summary (см. ниже)
груповая запись #1 (group header)
1 запись #1 (master data) куча полей в каждой записи
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #1) (group footer)
груповая запись #2
1 запись #1 (master data)
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #2)
* * * *
груповая запись #n
1 запись #1 (master data) куча полей в каждой записи
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #n)
summary:
1 сумма (запись #1, по всем группам)
2 сумма (запись #2, по всем группам)
3 сумма (запись #3, по всем группам)
1 среднее (запись #1, по всем группам)
2 среднее (запись #2, по всем группам)
3 среднее (запись #3, по всем группам)
сумма(по всем груповым записям от 1 по #n) (summary)
В общем то и здесь я выкрутился, ввел переменные, зависмые от номера записи... те. например
запись_1_поле_x, запись_2_поле_x, запись_3_поле_x
и в MEMO отвечающем за вывод х блоке begin - end написал скрипт групирующий по нужным признакам:
begin
if [OraQuery."ключевое поле"] = '1' then
запись_1_поле_x :=
запись_1_поле_x + [OraQuery."x"];
if [OraQuery."ключевое поле"] = '2' then
запись_2_поле_x :=
запись_2_поле_x + [OraQuery."x"];
if [OraQuery."ключевое поле"] = '3' then
запись_3_поле_x :=
запись_3_поле_x + [OraQuery."x"];
end
Соответсвенно в нужном месте в новых мемах вывожу эти перменные...
для средних еще делю на кол-во записей...
Основная проблема состоит в том, что полей в каждой такой записи от 50 до 100... и вводить на каждую таккую запись по 3 перменные это означает увеличить общее число от 150 до 300...... Уж очень не хочется делать такое кол-во обработчиков и внизу лепить в три ряда мемы с этими перменными...
А теперь вопрос..... Может все можно сделать намного проще... ????
Маленький пример
объект 1
час 1 Парам 1 Парам 2 Парам n
1 4 2 10
2 7 3 22
3 2 4 31
13 9 63
час 2 Парам 1 Парам 2 Парам n
1 4 0 10
2 0 3 22
3 2 4 0
6 7 32
час 3 Парам 1 Парам 2 Парам n
1 1 3 4
2 2 3 5
3 3 3 10
6 9 19
Итого по 1 9 5 24
2 9 9 54
3 7 11 41
25 25 119
средние
1 3
2 3 и тп и тд...
3 2,33
колво строк за кждый час всегда 3.... а вот часов может быть 24 ;-)))
С наилучшими пожеланиями, Вячеслав.
Есть отчет следующего вида:
груповая запись #1 (group header)
ключевое поле -> 1 запись #1 (master data) куча полей в кждой записи..
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #1) (group footer)
груповая запись #2
1 запись #1 (master data)
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #2)
* * * *
груповая запись #n
1 запись #1 (master data)
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #n)
сумма(по всем груповым записям от 1 по #n) (summary)
Я создал его за пару минут накидав нужных бэндов.... но это еще не все...
требовалось дополнить этот отчет некторыми расчетами и расположить их в summary (см. ниже)
груповая запись #1 (group header)
1 запись #1 (master data) куча полей в каждой записи
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #1) (group footer)
груповая запись #2
1 запись #1 (master data)
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #2)
* * * *
груповая запись #n
1 запись #1 (master data) куча полей в каждой записи
2 запись #2 (master data)
3 запись #3 (master data)
сумма(по групповым записям #n)
summary:
1 сумма (запись #1, по всем группам)
2 сумма (запись #2, по всем группам)
3 сумма (запись #3, по всем группам)
1 среднее (запись #1, по всем группам)
2 среднее (запись #2, по всем группам)
3 среднее (запись #3, по всем группам)
сумма(по всем груповым записям от 1 по #n) (summary)
В общем то и здесь я выкрутился, ввел переменные, зависмые от номера записи... те. например
запись_1_поле_x, запись_2_поле_x, запись_3_поле_x
и в MEMO отвечающем за вывод х блоке begin - end написал скрипт групирующий по нужным признакам:
begin
if [OraQuery."ключевое поле"] = '1' then
запись_1_поле_x :=
запись_1_поле_x + [OraQuery."x"];
if [OraQuery."ключевое поле"] = '2' then
запись_2_поле_x :=
запись_2_поле_x + [OraQuery."x"];
if [OraQuery."ключевое поле"] = '3' then
запись_3_поле_x :=
запись_3_поле_x + [OraQuery."x"];
end
Соответсвенно в нужном месте в новых мемах вывожу эти перменные...
для средних еще делю на кол-во записей...
Основная проблема состоит в том, что полей в каждой такой записи от 50 до 100... и вводить на каждую таккую запись по 3 перменные это означает увеличить общее число от 150 до 300...... Уж очень не хочется делать такое кол-во обработчиков и внизу лепить в три ряда мемы с этими перменными...
А теперь вопрос..... Может все можно сделать намного проще... ????
Маленький пример
объект 1
час 1 Парам 1 Парам 2 Парам n
1 4 2 10
2 7 3 22
3 2 4 31
13 9 63
час 2 Парам 1 Парам 2 Парам n
1 4 0 10
2 0 3 22
3 2 4 0
6 7 32
час 3 Парам 1 Парам 2 Парам n
1 1 3 4
2 2 3 5
3 3 3 10
6 9 19
Итого по 1 9 5 24
2 9 9 54
3 7 11 41
25 25 119
средние
1 3
2 3 и тп и тд...
3 2,33
колво строк за кждый час всегда 3.... а вот часов может быть 24 ;-)))
С наилучшими пожеланиями, Вячеслав.
Комментарии
begin
запись_поле_x[OraQuery."ключевое поле"] :=
запись_поле_x[OraQuery."ключевое поле"] +[OraQuery."x"];
end;
Я думал, может есть способ подсчитаь автоматом сумарные сгруппированые по 1, 2,3 и средние и вывести их в каком то бэнде.... те обойтись без ручных программных вставок...