BIRT — добавление итогов из нескольких наборов данных
Вопрос
У меня есть отчет в 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"));
Постоянная глобальная переменная — это просто сериализуемое значение, доступ к которому можно получить за пределами границ компонентов внутри отчета.Это может оказаться очень полезным для таких же требований, как ваши.
Удачи!