2013-11-29 4 views
0

Мне нужно, чтобы получить сумму столбца Струнный так я написал это:Как claculate строки столбца Сумма в jasperReport

<variable name="totalQt" class="java.lang.Integer" calculation="Sum"> 
    <variableExpression> 
     <![CDATA[Integer.parseInt($F{QTARTBP}.replaceAll(" ", ""))]]> 

    </variableExpression> 
</variable> 

Но я получаю эту ошибку:

.... 
Caused by: java.lang.NumberFormatException: For input string: "" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:504) 
at java.lang.Integer.parseInt(Integer.java:527) 
at 
articleBonPreparation_1385730226859_237481.evaluateEstimated(articleBonPreparation_1385730226859_237481:428) 

at net.sf.jasperreports.engine.fill.JREvaluator.evaluateEstimated(JREvaluator.java:254) 

Таким образом, есть пустая строка, так как использовать ноль в этом случае, я писал thiw, но это неправильно :

<variableExpression> 

     <![CDATA[$F{QTARTBP}.equals("") ? 0 : Integer.parseInt($F{QTARTBP}.replaceAll(" ", ""))]]> 

    </variableExpression> 

Любая идея будет оценена

ответ

-2

Jasper не рассчитать - вы должны генерировать String в вашем Java-коде. И подсчитайте, что вам нужно в java.

Обновление. Этот ответ неверен. Я узнал JR еще глубже и понимаю его.

+1

Ваш ответ неясен. Что значит «Джаспер не рассчитать»? –

0

Было бы полезно посмотреть, какие входные данные вы используете, но, несмотря на это, ясно, что ваш код не будет работать, если значение $F{QTARTBP} - это простое пространство (" "). Вы можете попробовать следующее выражение вместо, который будет включать в себя единое пространство в вашей пустой проверки строки и вернет 0 вместо:

$F{QTARTBP}.replaceAll(" ", "").equals("") ? 0 : Integer.parseInt($F{QTARTBP}.replaceAll(" ", "")) 

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

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