Скрыть несколько подробных полос - PullRequest
1 голос
/ 13 мая 2011

У меня есть отчет с вложенным отчетом для добавления логотипа в основной отчет.В этом подотчете у меня есть 2 детальные полосы для поддержки двух логотипов разного размера;один длинный, а другой примерно третий длинный (ширина).вроде как ...

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

Между 1-й и 2-й строкой периодов находится полоса Details 1 , а между 2-й и 3-й - Details 2 band.

Я пытаюсь использовать «Print When Expression» для переключения 1-го или 2-го диапазона Detail в зависимости от значения $F{LogoName}.

Detail 1 band:

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

Detail 2 band:

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

, но это не работает.

Также пробовали:

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

$F{LogoName} - это "имя компании".

Каждый раз, когда я запускаю отчет, только Подробно 2 показывает полосу.Я не могу получить детали 1 для отображения вообще, и я не получаю никаких сообщений об ошибках.

Любая помощь приветствуется.

Спасибо

1 Ответ

0 голосов
/ 14 мая 2011

Попробуйте это:

$F{LogoName}.equals( "acompanyname" )

В Java оператор равенства (==) при использовании для объектов проверяет, являются ли они одинаковыми ссылками на один и тот же объект.Эта программа охватывает всех разработчиков отчетов без большого опыта программирования на Java.Вы можете написать:

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

Это вернет true, как вы и ожидаете, потому что оба объекта по обе стороны от оператора равенства одинаковы.Рассмотрим следующее:

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 сравнивает ссылки, а не значения.

...