простая математическая проблема

#jasper-reports

#jasper-отчеты

Вопрос:

Я пытаюсь изменить существующий шаблон JasperReports для счета-фактуры. Я хотел бы выполнить простую математику в одном поле, т. Е. рассчитать налог из существующей валовой стоимости. Общее значение представлено параметром $ P {prevAdvanceLine1Sum}, и в следующем поле я хотел бы просто разделить это значение на число (в моем случае 1.23).
Можете ли вы дать мне выражение, которое я должен использовать, и какой класс выражения установить?

Ответ №1:

Вы можете использовать простые арифметические операторы (например, » / » в этом случае. Смотрите пример здесь: EL Basic Arithmetic), или используйте предопределенные методы, предоставляемые iReports. Это означает, что щелкните правой кнопкой мыши по текстовому полю и выберите Редактировать выражение. Затем выберите метод divide().
Итак, два метода будут следующими:
1. $ P {prevAdvanceLine1Sum / 1.23}
2. $ P {prevAdvanceLine1Sum}.divide( 1.23)

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

1. Первый вариант привел к ошибке: параметр не найден: prevAdvanceLine1Sum / 1.23 Второй вариант привел к ошибке: метод divide(double) не определен для типа String value = ((java.lang. Строка)параметр_prevadvanceline1sum.GetValue()).divide( 1.23); //$JR_EXPR_ID=61$

2. Представляет ли $P{prevAdvanceLine1Sum} строковое значение?

3. В этом случае должно быть очевидно, что вам следует либо изменить тип данных на int / double / number, либо преобразовать эту строку в int / bigdecimal . Вы не можете вызывать арифметические операции (например, деление) для строки, это не имеет никакого смысла.