Группировка

отредактировано 01:22 Раздел: FastReport 4.0
Таблица отсортирована в порядке возрастания
 22,00
 22,00
 87,30
 104,00
 480,00
 480,15
 530,00
 552,90
Нужно получить отчет по количеству строк сгруппированных по диапазону до 100, 100-500, свыше 500
1. Сделал отчет двухпроходный.
2. В MasterData вывожу значения таблицы.
3. В GroupHeader установил выражение группировки - переменную GROUP.
4. В GroupFooter подсчитываю количество строк MasterData в получившихся группах.
Сами же группы назначаются в процедуре MasterData1OnBeforePrint следующим образом:
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
  if Engine.FinalPass then
    begin
      GROUP:=2;                                         
      if <Отчет."Сумма с уч. скидки"><500 then GROUP:=1;  
      if <Отчет."Сумма с уч. скидки"><100 then GROUP:=0;
    end;            
end;
В результате получаю такой отчет:
Группа 0
0 22
0 22
0 87,3
1 104
Позиций 4
Группа 1
1 480
1 480,15
2 530
Позиций 3
Группа 2
2 552,9
Позиций 1

Последняя строка почему-то входит в другую группу. Почему? И как это обойти?

Комментарии

  • отредактировано 01:22
    Потому что группа уже напечатана при вызове данного метода, и этот метод будет работать только для следующей группы.
    Попробуйте в GroupHeader.OnBeforePrint

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

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