Как Masterdata вывести сумму значений 2-х, 3-х ячеек в колонке рядом

отредактировано June 2013 Раздел: FastReport 4.0
Добрый день.
Подскажите, пожалуйста, как сделать такое, есть отчета вида:


--Номер--Подразделение---Расход--Расход по подразделению
---- 1
Участок2
300
---- 2
Участок2
200
900
---- 3
Участок2
400
---- 4
Участок3
150
250
---- 5
Участок3
100
---- 6
Участок4
350
470
---- 7
Участок4
120

Не совсем понятно как можно заставить выводиться сумму расхода по подразделению
участок2 = 900=300+200+400; участок3 = 250 = 150+100 и т.д.
т.е. по сути ячейки идущих строк превращать в одну общую ячейку с сумарным значение для этих строк.
т.е. для участка2 напротив трех ячейки (300, 200, 400) в колонке рядом выводиться итоговое значение 900.
Как подобное делается?

Комментарии

  • отредактировано 07:12
    На сколько я понимаю нужно что-то типа GroupData только для ячейки.
  • отредактировано 07:12
    Я так понимаю мемки у вас на MasterData лежат?
    Сам такого не делал, но думаю, что это можно реализовать следующим образом.
    Заводите переменную Rashod_Podrazd, ставите значение 0.
    Заводите переменную Uchastok_old, ставите значение ''.
    Далее в расходе (900, 250 и т.д.) пишем:
    procedure MemoRashodOnAfterData(Sender: TfrxComponent);
    begin
      if ((<Uchastok_Old> <> '') and (<Uchastok_old> <> MemoUchastor.Text)) or (<line#>=count(Masterdata1)) then
      begin
        MemoRashod_Podrazd.Value := <Rashod_Podrazd>;
        Set('Rashod_Podrazd',0);
        Set(Uchastok_old', MemoUchastok.Text);
      end
      else begin
        Set('Rashod_Podrazd', <Rashod_Podrazd>+MemoRashod.Value);
        if (<Uchastok_Old> = '') then
          Set(Uchastok_old', MemoUchastok.Text);
      end;
    end;
    

    Или использовать подотчёты, пример есть в руководстве пользователя.
  • отредактировано 07:12
    Доброго утра.
    Настолько критично, что бы ячейка выглядела объединённой? Может, проще в этом столбце заполнять только каждое последнее поле для каждой группы?

    1) вариант
    Для этого используйте ф-ю decode и аналитическую dense_Rank() over (partition by <ид.группы> order by <order из запроса или rowcount>)
    2) либо decode + lead(<ид.группы>) over (order by <порядок из запроса>).
    Первые два варианта подходят, если таблица без горизонтальных линий.

    3) либо в шаблоне на получение данных пропишите обработчик, устанавливающий видимость/невидимость визуального компонента отчёта. Если повозится с рамками компонентов можно организовать визуальное подобие объединённой ячейки (но в простейшем случае выравнивание текста в ней будет по верхнему или нижнему краю).

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

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