BIRT — добавление итогов из нескольких наборов данных

StackOverflow https://stackoverflow.com/questions/1227947

  •  22-07-2019
  •  | 
  •  

Вопрос

У меня есть отчет в BIRT, и я хочу добавить в конце сводку.

Отчет представляет собой 3 таблицы, имеющие собственный набор данных.Я хочу показать четвертую таблицу со сводной информацией и общей суммой.У меня возникли проблемы с подсчетом общей суммы.

бывший:

DataSet #1
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx


DataSet #2
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx

DataSet #3
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx


Summary
Total DataSet #1 |  xx
Total DataSet #2 |  xx
Total DataSet #3 |  xx
Grand Total      | xxx
Это было полезно?

Решение

Вы уже создаете необходимые промежуточные итоги в каждой из первых трех таблиц (я думаю, через группу).В событии создания сценария для ячейки таблицы с общим итогом установите постоянную глобальную переменную для отслеживания каждого промежуточного итога.Затем вы можете получить доступ к каждому значению внутри четвертой и последней таблицы.

Чтобы установить переменную:

var totalValue = this.getDataRowData().getColumnValue("totalColumnName");
reportContext.setPersistentGlbalVariable("DataSet1Total", totalValue.toString());

ПРИМЕЧАНИЕ:Вам нужно будет отправить общую сумму в тип «String», чтобы обеспечить сериализацию.Вы можете преобразовать его обратно в число при отображении окончательной сводной таблицы.

Чтобы использовать переменную, добавьте в отчет текстовый элемент управления (в ячейку сводной таблицы).В событии сценария onCreate для текстового элемента управления введите следующее:

this.text = reportContext.getPersistentGlobalVariable("DataSet1Total");

Вы должны сделать это для каждого поля сводки, которое вы сохранили ранее.Затем для общего итога вы можете сделать это:

this.text = parseInt(reportContext.getPersistentGlobalVariable("DataSet1Total")) + parseInt(reportContext.getPersistentGlobalVariable("DataSet2Total")) + parseInt(reportContext.getPersistentGlobalVariable("DataSet3Total"));

Постоянная глобальная переменная — это просто сериализуемое значение, доступ к которому можно получить за пределами границ компонентов внутри отчета.Это может оказаться очень полезным для таких же требований, как ваши.

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top