Как я могу увеличить переменную со значением другой переменной в JasperReports?

Вот самые большие различия между двумя для меня, и я использовал обоих:

1) TFS скорее сильно связывается к "Visual Studio способ" выполнения разработки. Но это вовсе не значит, что TFS сильно связывается к IDE VS, это означает, что TFS изо всех сил пытается сохранить знакомую "регистрацию" / парадигма "выезда" Visual SourceSafe, даже когда это действительно больше не соответствующая модель. Понятие подрывной деятельности "фиксации" / "обновление" намного более реалистично, когда у Вас есть разработчики, которые могли бы провести время, разъединенное от сети. TFS ожидает, что разработчики всегда будут подключены к серверу. Это - большое минус. Я лично нахожу, что TFS менее, чем прозрачен о том, как файлы организованы на сервере и на Вашем локальном диске из-за трудной интеграции Visual Studio. Даже более крупные сторонники TFS признают, что его связанная модель регистрации/выезда не является востребованной опцией для разработчиков, которые работают разъединенные. В климате, где люди начинают смотреть на опции DVCS как мерзавец и Подвижный по SVN, модель "выезда" TFS немного походит на динозавра.

2) Стоимость. Те, кто говорит, что TFS не является дорогим, являются или вероятно очень небольшими магазинами или не в соответствии с условиями лицензирования TFS. Вам нужна Лицензия на клиентский доступ для штопки около всего, что Вы делаете. Действительно ли Вы - менеджер, который просто управляет ошибками? Вам нужен ~ CAL за 250$ (Существует 5 включенных с розничной Лицензией TFS). Бизнес-пользователь, который просто хочет сообщить относительно их проблем? CAL за 250$. Разработчик? 250$ (Если у них нет MSDN, в этом случае, это включено). Сервер? 500$ (Включенный, если у Вас есть MSDN). Конечно, кто-то продающий Вам, копия TFS скажет Вам, что отслеживание объекта работы является бесплатным для дополнительных пользователей, но эти дополнительные пользователи могут только видеть объекты работы, которые они сами создают, а не объекты работы целой команды, который не слишком полезен в ориентированной командой, гибкой среде. Все это складывает, когда у Вас есть организация среднего размера, и становится жестким для выравнивания по ширине, когда столько лучших среди аналогов продуктов как SVN и возрастающая стоимость CruiseControl.net составляет 0$. (Объективности ради по отношению к TFS, тем не менее, я все еще ожидаю действительно хорошая система отслеживания ошибок OSS)

3) структура Проекта. В многочисленных командах с меньшим числом проектов, TFS будет, вероятно, работать хорошо. Если Вы - много маленьких, несвязанных или свободно связанных внутренних приложений направления деятельности, структура TFS может начать становиться властной. С одной стороны, не возможно определить таксономию самих проектов - можно настроить "области" в рамках проекта, но все проблемы и документы прослежены вместе в основном контексте "проекта". Создание новых "проектов" является часто трудоемким, и является излишеством для небольших усилий. Конечно, SVN не имеет ничто подобного, так как он фокусируется только на управлении исходным кодом, но если Вам нужна хорошая гибкость маленькая проекта, SVN и другой инструмент отслеживания ошибки могли бы быть лучшим выбором.

Мое мнение, если это имеет значение:

  • Для многочисленных команд с большими, хорошо планируемыми проектами, в магазине Microsoft, где разработчики работают почти исключительно в IDE, TFS является победителем. TFS также побеждает, когда необходимо централизованно осуществить политику с проектами.

  • Для многих малочисленных команд, со многими варьировался, меньшие проекты или магазины, где стоивший проблема или команды, у которых есть разработчики, которые работают разъединенные от управления исходным кодом, идут с SVN.

17
задан Alex K 18 June 2016 в 11:49
поделиться

3 ответа

Добавить атрибут вычисление = "Sum" в имя переменной = "grandCount"

или передайте grandCount в подотчет как параметр

<subreportParameter name="grandCount">
<subreportParameterExpression><![CDATA[$P{grandCount}]]></subreportParameterExpression>
</subreportParameter>

в объявленной переменной подотчета countItems с начальным значением параметра grantCount

<variable name="countItems" .... >
   <variableExpression><![CDATA[$P{itemCount} + $P{grandCount}]]></variableExpression>
   <initialValueExpression><![CDATA[$P{grandCount}]]></initialValueExpression>
</variable>

и return

<returnValue subreportVariable="countItems" toVariable="grandCount" calculation="Sum"/>
7
ответ дан 30 November 2019 в 14:38
поделиться

Я не совсем понимаю, как написать это в JRXML, поскольку я использую iReport. В iReport я создаю новую переменную с типом класса «Целое число» и типом расчета «Система». Здесь важен тип вычисления.

В выражении переменной вам понадобится что-то вроде $ V {grandCount} = $ V {grandCount} + $ V {itemCount}

ПРИМЕЧАНИЕ. JasperReports визуализирует построчно, поэтому вы не сможет использовать переменную grandCount в полосе перед полосой подотчета.

Надеюсь, я не слишком поздно

1
ответ дан 30 November 2019 в 14:38
поделиться

Вы можете попытаться увеличить свою переменную (я назвал ее totalSum) только тогда, когда диапазон (группа) равен тому, на котором находится подотчет. Для этого вам понадобится поле в отчете, чтобы указать текущую полосу (группу).

<variable name="totalSum" 
         class="java.lang.Integer" 
         resetType="Report" 
         incrementType="Group" 
         incrementGroup="ITEM_BUNDLE"
         calculation="Nothing">
 <variableExpression>
 <![CDATA[new Boolean($F{reportPart}.equals("The_band_with_the_subreport")).booleanValue() ? $V{returnValue} : $V{totalSum}]]>
 </variableExpression>
 <initialValueExpression>
           <![CDATA[new Integer(0)]]>
 </initialValueExpression>
</variable>

Я не уверен, работает ли это, у меня нет контекста, чтобы проверить это. Но вы также можете попробовать второе решение - с тремя переменными. Например, вы сохраняете значение, возвращаемое из подотчета (скажем, returnValue ) в переменной, и вы используете еще две переменные для хранения суммы - одну до тех пор, пока не будет вызван подотчет (скажем, partialSum ), а второй - для хранения суммы между returnValue и partialSum. Назовем это totalSum. Тогда для totalSum будет что-то вроде этого:

<variable name="totalSum" 
         class="java.lang.Integer" 
         resetType="Report" 
         incrementType="Group" 
         incrementGroup="ITEM_BUNDLE"
         calculation="Nothing">
   <variableExpression>
        <![CDATA[$V{returnValue} +  $V{partialSum}]]>
   </variableExpression>
   <initialValueExpression>
           <![CDATA[new Integer(0)]]>
   </initialValueExpression>
</variable>

Для partialSum вы ' у меня будет что-то вроде этого:

<variable name="partialSum" 
         class="java.lang.Integer"
         resetType="Report"
         calculation="Sum"
         incrementType="None">
    <variableExpression>
        <![CDATA[new Boolean($F{reportPart}.equals("The_band_with_the_subreport")).booleanValue() ? $V{returnValue} : new Integer(0)]]>
    </variableExpression>
    <initialValueExpression>
         <![CDATA[new Integer(0)]]>
    </initialValueExpression>
  </variable>

Надеюсь, это немного поможет. Было бы проще выполнить все эти настройки из iRport прямо в отчете, который вы хотите использовать.

1
ответ дан 30 November 2019 в 14:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: