PageFooter не подходит, нужно чтоб итог к данным был прикремлен. Да еще имеется band ReportSummary, который встает между MasterData и PageFooter. Можно как-нибудь PageFooter поднять что ли перед ReportSummary ?
PageFooter не подходит, нужно чтоб итог к данным был прикремлен. Да еще имеется band ReportSummary, который встает между MasterData и PageFooter. Можно как-нибудь PageFooter поднять что ли перед ReportSummary ?
Если на странице по одному MasterData, то попробуйте так:
1) добавьте Footer-бэнд, на котором и выводите суммы,
2) для MasterData утсановите Footer для каждой записи (FooterAfterEach=true).
Мне нужно не под каждой записью, а в конце MaserData на каждой странице. Есть еще варианты ?
Суммы по листу выводите в PageFooter.
Для ReportSummary задайте такой обработчик для OnBeforePrint, чтобы последний PageFooter напечатать перед ReportSummary.
Единственный минус, аггрегатные функции на ReporSummary перестают считаться и возвращают 0. Так что их придется считать вручную либо сохранять значения агрегатных ф-ций перед вызовом Engine.ShowBand(PageFooter1) и восстанавливать после вызова.
procedure ReportSummary1OnBeforePrint(Sender:TfrxComponent);var
iTotalCount: integer;
dTotalSum:double;beginifEngine.FinalPassthenbegin// Сохранить значения агрегатных функций в переменных
iTotalCount := COUNT(MasterBand1);
dTotalSum := SUM(<MyDataset."ValueField">,MasterBand1);Engine.ShowBand(PageFooter1);// Поместить сохраненные значения в Мемофункций в переменныхMemoTotalSum.Text:=FloatToStr(dTotalSum);MemoTotalCount.Text:=IntToStr(iTotalCount);end;end;
Здесь:
1) MemoTotalSum и MemoTotalCount лежат на ReportSummary;
2) MemoTotalSum содержит выражение [SUM(<MyDataset."ValueField">,MasterBand1)]
3) MemoTotalCount содержит выражение [COUNT(MasterBand1)]
Комментарии
1) добавьте Footer-бэнд, на котором и выводите суммы,
2) для MasterData утсановите Footer для каждой записи (FooterAfterEach=true).
Для ReportSummary задайте такой обработчик для OnBeforePrint, чтобы последний PageFooter напечатать перед ReportSummary.
Единственный минус, аггрегатные функции на ReporSummary перестают считаться и возвращают 0. Так что их придется считать вручную либо сохранять значения агрегатных ф-ций перед вызовом Engine.ShowBand(PageFooter1) и восстанавливать после вызова.
Здесь:
1) MemoTotalSum и MemoTotalCount лежат на ReportSummary;
2) MemoTotalSum содержит выражение [SUM(<MyDataset."ValueField">,MasterBand1)]
3) MemoTotalCount содержит выражение [COUNT(MasterBand1)]