Применение условного стиля к кросс-таблице с параметром

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

  1. Я создал параметр $P{Date} как java.sql.timestamp и проверил "для подсказки"

  2. Создал тот же параметр $P{Date} в моем запросе набора данных с той же информацией, что и предыдущий параметр (этот набор данных будет использоваться для заполнения кросс-таблицы)

  3. Создайте тот же параметр $P{Date} в моем элементе кросс-таблицы, а также ту же информацию, что и раньше.

  4. В свойствах кросс-таблицы в «Наборе данных» я добавил свой параметр с тем же именем «Дата» и выражением $P{Date} и оставил карту параметров пустой

Пока отчет работает нормально, и параметр данных работает для моей кросс-таблицы, фильтруя данные по дате, выбранной для параметра.

  1. Создал свой условный стиль (Style1) со следующим выражением:

    AND(MONTH(${crosstab_month}).equals(MONTH($P{Date})),
         YEAR(${crosstab_month}).equals(YEAR($P{Date})),
          DAY(${crosstab_month}).equals(01))
    

${crosstab_month} — это группа столбцов, в которой отображается дата (содержит первый день каждого месяца, а также является отметкой времени).

Теперь, когда я запускаю отчет, я не могу заставить его работать, я помещаю разметку во все поля как «стилизованные», а в «Стиль и детали печати» - как Style1.

Я что-то забыл? Я не понимаю, почему это не работает, потому что, если я изменю $P{Date} на NOW() в выражении стиля, это сработает... значение $P{Date} каким-то образом неправильно оценивается как дата/ отметка времени?


person Synamoon    schedule 01.09.2016    source источник
comment
Возможно, вам не хватает передачи $P{Date} в поднабор данных. Это будет сделано внутри прогона набора данных (часть определения набора данных кросс-таблицы).   -  person dada67    schedule 01.09.2016
comment
Разве это не шаги 3 и 4?   -  person Synamoon    schedule 02.09.2016
comment
Правильно, мой плохой. Можете ли вы показать $P{Date} в текстовом поле кросс-таблицы (например, в том, которое использует Style1), чтобы проверить значение параметра кросс-таблицы?   -  person dada67    schedule 02.09.2016
comment
Я добавил $P{Date} в кросс-таблицу, но он отображается как нулевой. Что мне здесь не хватает?   -  person Synamoon    schedule 14.09.2016
comment
Выложите свой JRXML (желательно минимальную версию, иллюстрирующую проблему).   -  person dada67    schedule 15.09.2016


Ответы (1)


Поэтому я нашел обходной путь, чтобы решить эту проблему, и это было изменение запроса, чтобы получить значение входного параметра $P{Date}, и вставить новый столбец в мою кросс-таблицу (с w=0 и h=0).

После этого я изменил условие стиля на;

AND(MONTH(${crosstab_month}).equals(MONTH($V{ReportDate})),
 YEAR(${crosstab_month}).equals(YEAR($V{ReportDate})),
  DAY(${crosstab_month}).equals(01))

$V{ReportDate} — это имя новой группы столбцов кросс-таблицы.

Надеюсь это поможет! :) Спасибо!

person Synamoon    schedule 27.09.2016