2011-05-12 5 views
1

주 보고서에 로고를 추가하는 하위 보고서가있는 보고서가 있습니다. 이 하위 보고서에는 두 개의 서로 다른 크기의 로고를 지원하는 2 개의 세부 밴드가 있습니다. 하나는 길고 다른 하나는 길이가 약 3 분의 1입니다. 종류의이 같은 ... 기간의 1, 2 행 사이여러 세부 밴드 숨기기

 
........................... 
|---------logo------------| 
address 1, address 2 
........................... 
|__logo__| address 1 
|  | address 2 
........................... 

자세한 사항 1 밴드이며, 2 층과 3 사이에 자세한 사항 2 밴드입니다.

$F{LogoName} 값에 따라 첫 번째 또는 두 번째 세부 밴드를 전환하려면 "표현식 인쇄"를 사용하려고합니다.

상세 1 밴드 :

new Boolean($F{LogoName}=="acompanyname") 

상세 2 밴드 :

new Boolean($F{LogoName}!="acompanyname") 

하지만이 작동하지 않습니다.

이러한를 시도 :

(($F{LogoName}=="acompanyname")?Boolean.TRUE:Boolean.FALSE) 
(($F{LogoName}!="acompanyname")?Boolean.TRUE:Boolean.FALSE) 

$F{LogoName}는 "acompanyname"입니다.

보고서를 실행할 때마다 세부 정보 2 밴드가 표시됩니다. 세부 정보 1을 표시 할 수없고 오류 메시지가 표시되지 않습니다.

어떤 도움을 환영합니다.

당신

답변

0

이 시도 감사 : 개체를 사용하는 경우

자바에서
$F{LogoName}.equals("acompanyname") 

, 항등 연산자 (==)이, 그들이 동일한 개체에 동일한 참조가 있는지 확인합니다. 이 기능은 많은 Java 프로그래밍 경험없이 모든 보고서 개발자를 포착합니다. 당신은 쓸 수 : 예상대로 등호 연산자의 양쪽에 두 객체가 동일하기 때문에, true을 반환

$F{LogoName} == $F{LogoName} 

. 다음 고려 :

public class T { 
    public static void main(String args[]) {          
    String s1 = "hello";               
    String s2 = (new StringBuilder(s1)).toString();       

    System.out.println(s1); 
    System.out.println(s2); 
    System.out.println(s1 == s2); 
    } 
} 

이 인쇄 :

문자열 객체의
hello 
hello 
false 

은 동일하지만, 문자열에 참조 다릅니다. equals 연산은 값이 아닌 참조를 비교합니다.

+0

Dave, 답변 해 주셔서 감사 드리며 늦게 접수하여 죄송합니다. 나는 코드를 제거하고 로고를위한 하나의 밴드 만 만들었다. 나는 비교 대상에 대한 귀하의 의미를 알고 있으며, 나는 그 사실을 풋내기에서 명심해야 할 것입니다. – cjoki

관련 문제