2009-08-04 3 views
1

У меня есть отчет в 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 

ответ

3

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

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

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

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

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

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

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

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

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

Удачи!

+0

Я пробовал это сделать, и он, похоже, не работает. Мои итоговые данные набора данных представляют собой агрегаты таблицы (функция SUM) - поле находится в нижнем колонтитуле. Я попытался добавить код в методе Render таблицы, который, похоже, не работает. Я попытался добавить его к методу Render в текстовом поле в нижнем колонтитуле, и это тоже не сработает. Любые предложения о том, что я могу сделать неправильно/как исправить, приветствуются – shikarishambu