2011-10-05 3 views
1

경우 나는 iReport로이 식을 가지고 :의 iReport는 그렇지 표현

($F{Q3_February}==0)?"-":$F{Q3_February} 

표현 클래스 Double, 난 등의 반환이 원하는 "-"$F{Q3_February}의 값이 0 경우.

내가 얻을 "-"나는 표현 클래스 String로 변경하지만 문제가있는 경우에만 가치가 당신의 문제는 텍스트 필드 패턴이 적용되지 않습니다 것을 #,##0.00 %

답변

2

의 값을 반환하지 않는 거짓이면 표현식 클래스가 숫자가 아닌 경우 조건 적으로 값뿐만 아니라 클래스도 변경하려고합니다. 단일 textField에서는이 작업을 수행 할 수 없습니다.

최선의 방법은 이것을 두 개의 textFields, 하나의 문자열 및 하나의 double로 분리하는 것입니다. 서로를 위에 놓고 원하지 않는 것을 숨기려면 printWhenExpression을 사용하십시오. 최종 결과는 조건식이있는 단일 입력란과 유사하지만 다른 요소 속성 (예 : 클래스 및 패턴)에 더 많은 유연성을 제공합니다.

예 :

<textField pattern="#,##0.00 %"> 
    <reportElement x="200" y="80" width="100" height="20"> 
     <printWhenExpression> 
      <![CDATA[$F{Q3_February}!=0]]> 
     </printWhenExpression> 
    </reportElement> 
    <textFieldExpression class="java.lang.Double"> 
     <![CDATA[$F{Q3_February}]]> 
    </textFieldExpression> 
</textField> 
<textField> 
    <reportElement x="200" y="80" width="100" height="20"> 
     <printWhenExpression> 
      <![CDATA[$F{Q3_February}==0]]> 
     </printWhenExpression> 
    </reportElement> 
    <textFieldExpression class="java.lang.String"> 
     <![CDATA["-"]]> 
    </textFieldExpression> 
</textField> 
+0

안녕 genericjon ... 감사합니다 ... 다시 한번 감사 – toink

0

몇 가지 다른 방법이 있습니다 [해결하기 GenericJon의 제안에이] : "패턴의 표현"이라고 텍스트 상자에 필드가 4.1.1로

  1. 필드 기반 필드 서식 옵션
  2. 필드가 데이터 세트에 들어가기 전에 서식을 지정할 수 있지만 [권장되지는 않지만 작동]
  3. 마지막으로, 스크립틀릿을 호출하고 텍스트 상자의 텍스트 섹션에있는 필드 값을 전달할 수 있습니다. 이 내가 해결 방법으로 무슨 짓을했는지 실제로 응답에 대한
[Define Scriptlet name="bob"] 
<textFieldExpression class="java.lang.String"> 
<!CDATA[$P{[bob]_SCRIPTLET}.formatValues(fields1:n..)]]></textFieldExpression>