Как заставить параметр по умолчанию иметь нулевое значение в отчете BIRT?

В отчете BIRT есть два параметра строкового текстового поля, которые выглядят одинаково на странице «Редактировать параметр», и оба пусты в поле «Значение по умолчанию». Однако, когда я выбираю запуск отчета, один по умолчанию выбирает «Нулевое значение», а другой по умолчанию использует пустую строку. Как я могу настроить, какое значение по умолчанию используется? Ни один из параметров не используется набором данных, поскольку это просто текст.

Строковые параметры


person Orin    schedule 01.12.2015    source источник


Ответы (2)


Обработка нулевых параметров — одна из слабых сторон BIRT. Например, нельзя просто оставить значение параметра набора данных по умолчанию пустым. И если во время выполнения в набор данных действительно передается нуль, BIRT выдает огромные бесполезные трассировки стека, говорящие, что это не поддерживается... На стороне Oracle NULL и пустая строка эквивалентны, поэтому я обычно использую "" в качестве значение по умолчанию и убедитесь, что нулевое значение, переданное из контекста, преобразуется в "" с помощью этого маленького помощника:

function nvl_mt(x) {
  if (x==null) {
    return "";
  }
  return x;
}

Чтобы узнать, почему параметры ведут себя по-разному, взгляните на исходный XML, возможно, вы найдете разницу там.

Также обратите внимание, что для каждого параметра отчета BIRT имеет значение по умолчанию, хранящееся в файле .rptdesign, и еще одно значение по умолчанию, хранящееся в соответствующем файле .rptconfig, который используется только при запуске отчета из среды IDE.

person hvb    schedule 02.12.2015

У меня есть несколько отчетов с аналогичными ограничениями.

Одним из решений является использование «Все» в качестве значения по умолчанию и бит, если SQL такой. Он возвращает либо одно введенное значение, либо все («Все» не является допустимым значением в CONTCTSM1.OPERATOR_ID, поэтому всегда будет возвращаться нуль.

where CONTCTSM1.OPERATOR_ID = ?
or
'All' = ?

Все

В качестве аллитерации вы можете использовать подобный оператор в своем SQL и % в качестве значения по умолчанию.

where UPMCNOTIFICATIONCONTACTSM1.UPMC_ADDRESS like ?
and UPMCNOTIFICATIONCONTACTSM1.UPMC_FULL_NAME like ?

введите здесь описание изображения

НО

Null не отображается при поиске подстановочных знаков. Так что, если у вас действительно есть Null в ваших данных, вы можете захотеть SQL isnull() или sub is null запрос

and ( UPMC_METADATA_DOMAIN like ?
or UPMC_METADATA_DOMAIN is null )
person James Jenkins    schedule 02.12.2015