Итог по странице

отредактировано 01:15 Раздел: FastReport 3.0
Подскажите пожалуста как сделать строку "Итого на странице" на каждой станице по одному MasterData

Комментарии

  • отредактировано 01:15
    PageFooter не подходит, нужно чтоб итог к данным был прикремлен. Да еще имеется band ReportSummary, который встает между MasterData и PageFooter. Можно как-нибудь PageFooter поднять что ли перед ReportSummary ?
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано 01:15
    outman написал:
    PageFooter не подходит, нужно чтоб итог к данным был прикремлен. Да еще имеется band ReportSummary, который встает между MasterData и PageFooter. Можно как-нибудь PageFooter поднять что ли перед ReportSummary ?
    Если на странице по одному MasterData, то попробуйте так:
    1) добавьте Footer-бэнд, на котором и выводите суммы,
    2) для MasterData утсановите Footer для каждой записи (FooterAfterEach=true).
  • отредактировано 01:15
    Мне нужно не под каждой записью, а в конце MaserData на каждой странице. Есть еще варианты ?
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано October 2005
    outman написал:
    Мне нужно не под каждой записью, а в конце 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)]

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

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