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.
procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
begin
Engine.ShowBand(PageFooter1);
end;
Единственный минус, аггрегатные функции на ReporSummary перестают считаться и возвращают 0. Так что их придется считать вручную либо сохранять значения агрегатных ф-ций перед вызовом Engine.ShowBand(PageFooter1) и восстанавливать после вызова.
procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
var
iTotalCount: integer;
dTotalSum: double;
begin
if Engine.FinalPass then
begin
// Сохранить значения агрегатных функций в переменных
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)]