Готовые средства vs ручная реализация

отредактировано 15:38 Раздел: FastReport 2.xx VCL
Использовал 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




Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.