Crosstab при динамическом удалении колонки не корректно удаляются колонки из Total, Grandtotal

отредактировано July 2013 Раздел: FastReport 4.0
Добрый день.

Есть отчёт вида см. рис. 1 (в настройках кросс-таба с опции "ячейки одной строкой" галочка снята)
В коде программы (на Delphi) динамически удаляю колонки FACT, NORM, DELTA таким вот способом:
with frxDBCross do
begin
  for i := CellFields.Count - 1 downto 0 do
  if (NeedDelFact and (CellFields[i] = 'FACT')) or
     (NeedDelNorm and (CellFields[i] = 'NORM')) or
     (NeedDelDelta and (CellFields[i] = 'DELTA')) then
  begin
    CellFields.Delete(i);
    for j := i to CellLevels - 2 do
    begin
      CellHeaderMemos[j].AssignAll(CellHeaderMemos[j+1]);
      CellMemos[j].AssignAll(CellMemos[j + 1]);
      CellFunctions[j] := CellFunctions[j+1];
    end;
    for j := 0 to CellLevels - 2 do
    begin
      if (j >= i) then
        k := j + 1
      else
        k := j;
      CellMemos[(CellLevels-1)*RowLevels+j].AssignAll(CellMemos[CellLevels*RowLevels+k]);
      CellFunctions[(CellLevels-1)*RowLevels+j] := CellFunctions[CellLevels*RowLevels+k];
    end;
    CellLevels := CellLevels-1;
  end;
end;

допустим св-во NeedDelDelta=True, в результате колонка-строка DELTA везде удаляется нормально, но вот в подитоге колокни/строки Col1 и в общем итоге удаляется не корректно (см. рис. 2).
Подскажите, пожалуйста, как исправить данную проблему?

Комментарии

  • gpigpi
    отредактировано 07:14
    Код из примера Дениса Зубова, который Вы слегка модифицировали, не учитывает работу с подитогами. Для достижения требуемого результата Вам нужно смещать ячейки в массиве из CellLevels*RowLevels елементов RowLevels раз
  • отредактировано 07:14
    gpi написал: »
    Код из примера Дениса Зубова, который Вы слегка модифицировали, не учитывает работу с подитогами. Для достижения требуемого результата Вам нужно смещать ячейки в массиве из CellLevels*RowLevels елементов RowLevels раз
    Пожалуйста, не могли бы показать примером, что нужно написать в коде Дениса Зубова, что корректно заработало формирование ячеек/колонок FACT, NORM, DELTA в подитоге и итоге?

    P.S. не документированные возможности кросса для меня как черный ящик

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

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