Группировка по значению параметра в jasper

#jasper-reports #reporting

#jasper-отчеты #отчетность

Вопрос:

Ну, я не знаю, может быть, я что-то упускаю, но я пытался сгруппировать данные в отчете jasper, но пока группировка появляется только в том случае, если групповое выражение является полем. Можно ли группировать данные по значению параметра вместо значения поля? т.Е. Что-то вроде

 <groupExpression><[!CDATA[$P{some_param}]]></groupExpression>
 

вместо

 <groupExpression><[!CDATA[$F{some_field}]]></groupExpression>
 

в файле .jrxml?

Комментарии:

1. Возможно, я ошибаюсь, но группы ссылаются на данные (поэтому использование поля имеет смысл), а параметры — нет, поскольку невозможно определить, принадлежит ли параметр определенным данным.

Ответ №1:

Можно ли сгруппировать данные по значению параметра вместо значения поля?

Да, это так, как вы и упомянули. У вас не будет синтаксических ошибок, и отчет будет сгенерирован.

Проблема в том, что это может не принести того, что вы ожидаете. Групповые бэнды обычно печатаются каждый раз, когда изменяется «Групповое выражение». Таким образом, в основном этот параметр должен быть связан с чем-то, что изменится во время генерации отчета (например, заполнение параметра вложенного отчета полем таким образом, чтобы этот вложенный отчет использовал этот параметр в качестве группового выражения). И, конечно, это должно быть связано с чем-то, что имеет смысл и обеспечивает желаемое поведение.

У вас может быть что-то подобное в вашем вложенном отчете:

 ...
    <parameter name="START" class="java.util.Date"/>
    <parameter name="END" class="java.util.Date"/>
...
 

И что-то вроде этого в подробном разделе вашего «супер» отчета:

 <subreport>
     <reportElement x="0" y="10" width="555" height="200" uuid="ac2c99da-f595-4498-a518-2bfb1f31b73c"/>
         <subreportParameter name="START">
                <subreportParameterExpression><![CDATA[$F{start}]]></subreportParameterExpression>
         </subreportParameter>
         <subreportParameter name="END">
                <subreportParameterExpression><![CDATA[$F{end}]]></subreportParameterExpression>
         </subreportParameter>
         ...
</subreport>
 

Просто обратите внимание, я предполагаю, что поля $ F {end} и $ F {start} также являются объектами «java.util.Date».