2015-12-10 6 views
0

Я новичок в JasperReports, но мне кажется, что я получаю его. В конце концов, это просто еще один разметка.Могу ли я изменить значение переменной?

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

У меня есть переменная, которая вычисляет сумму строк, но я хочу сбросить сумму до нуля с каждой подгруппой, возможно ли это?

Вот моя переменная декларация:

<variable name="G_COUNT" class="java.lang.Integer" calculation="Sum"> 
<variableExpression><![CDATA[(($F{ROW_NUMBER}.intValue() != 9)?$F{ITEM_COUNT}:new Integer(0))]]></variableExpression> 
<initialValueExpression><![CDATA[new Integer(0)]]></initialValueExpression> 

Есть ли способ, что я могу использовать эту переменную, сбрасывая в 0, когда новая дата будет найдена, или я использую неправильный тип, чтобы сделать что я хочу?

Как предостережение, я редактирую файл .jrxml в текстовом редакторе, а не в iReport.

ответ

0

То, что я смог выяснить из чтения dtd, состоит в том, что группы доступны для запуска события сброса.

<variable name="G_COUNT" class="java.lang.Integer" calculation="Sum" resetType="Group" resetGroup="SubCalc"> 
<variableExpression><![CDATA[(($F{ROW_ORDINAL}.intValue() != 9)?$F{ITEM_COUNT}:new Integer(0))]]></variableExpression> 
<initialValueExpression><![CDATA[new Integer(0)]]></initialValueExpression> 

<group name="SubCalc"> 
    <groupExpression><![CDATA[$F{ROW_ORDINAL} == 1]]></groupExpression> 
</group> 

Таким образом, когда == 1 ROW_ORDINAL это вызывает событие сброса, который устанавливает значение G_COUNT к initialValueExpression

Смежные вопросы