Обнуление подытогов в Pagefooter

отредактировано 15:27 Раздел: FastReport 4.0
Всем привет!
Задача выводить на каждой странице подытог из тех записей MasterData, что уместилось на странице.
В голову приходить только PageFooter с агрегатной [SUM(<dataset.column1>,MasterData,3)].
И он удовлетворяет, если conditional для GroupHeader единственный, если нет, то расчёт в PageFooter надо сбрасывать.
Есть ли возможность привязать расчёт в PageFooter к GroupHeder, или сбрасывать расчёт после печати GroupFooter?
Заранее благодарен!

Комментарии

  • отредактировано 15:27
    Можно конечно все значения писать в массивы, и перед печатью pagefooter считать сумму, это конечно попахивает изнасилованием, но если это не решить штатным способом, то придётся идти на преступление...
  • gpigpi
    отредактировано 15:27
    написал:
    И он удовлетворяет, если conditional для GroupHeader единственный
    Что такое "conditional"? Если Condition, то что такое единственный/не единственный? Одна/несколько групп?
    написал:
    если нет, то расчёт в PageFooter надо сбрасывать
    Что должно получиться? Число записей последней группы, которая выведена на странице?
  • отредактировано 15:27
    написал:
    Если Condition, то что такое единственный/не единственный? Одна/несколько групп?
    Да, опечатался, Condition. Как я понимаю, в Condition указывается поле по которому проходит группировка, и соответственно выводиться в отчёт кол-во сгруппированных групп.
    написал:
    Что должно получиться? Число записей последней группы, которая выведена на странице?
    Если группа получилась одна, то в PageFooter считается итог с нарастанием по тем данным, что есть на странице. Т.е если группа растянулась на несколько страниц, то на каждой странице, где нет GroupFooter я отображаю PageFooter c промежуточными итогами. И это сейчас работает благодаря обычной агрегатной функции SUM.
    Должно получиться:
    Если групп получилось несколько, то с началом новой группы надо обнулять суммирование, и начинать считать промежуточные данные по новой группе.
  • gpigpi
    отредактировано 15:27
    написал:
    Если групп получилось несколько, то с началом новой группы надо обнулять суммирование, и начинать считать промежуточные данные по новой группе.
    В этом случае нужно считать в скрипте
  • отредактировано 15:27
    написал:
    нужно считать в скрипте
    А вы не сориентируете по поводу событий?
    Данные попадают в Memo после события OnAfterData, а PageFooter заполнить данными можно на событии OnBeforePrint, который вызывается судя по всему после того как данными наполнена вся группа, которая растянута на несколько страниц. не подскажите на каком событии надо писать в массив данные из Memo, и на каком записывать данные в PageFooter и обнулять массив?
  • отредактировано 15:27
    подебажил, и разобрался, если кому пригодится, писал во временный массив суммы, а перед печатью футера суммировал и записывал результат в Memo футера. после этого обнулял массив, и на новой странице всё сначала.

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

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