Готовые средства 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)
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 (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)
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