#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».