Фильтр для отчета с параметрами для относительных дат выдает ошибки

#report #expression #cognos #cognos-10

#Сообщить #выражение #когнос #cognos-10

Вопрос:

Я создаю фильтр для отчета в cognos report Studio, который использует параметры со страницы приглашения. Идея состоит в том, чтобы предоставить пользователю, который будет запускать отчет, возможность указать дату начала и дату окончания (и выбрать только деловые поездки в течение этого периода времени), а также иметь возможность выбора относительных временных рамок на случай, если отчет будет запланирован.

У меня было несколько синтаксических ошибок, которые я … исправил, или, по крайней мере, я так думал. При проверке фильтра он даже открывает страницу запроса, но после выбора значения он выдает ошибки, такие как:

Ошибка UDA-QOS-0006 UDA-SQL-0219 Функция «getdate» используется для локальной обработки, но недоступна как встроенная функция, или по крайней мере один из ее параметров не поддерживается

QE-DEF-0459 Исключение CCLException RQP-DEF-0177 При выполнении операции ‘sqlPrepareWithOptions’ произошла ошибка status=’-126′. UDA-SQL-0219 Функция «getdate» используется для локальной обработки, но недоступна как встроенная функция, или по крайней мере один из ее параметров не поддерживается

RSV-VAL-0004 Не удалось найти информацию запроса для элемента Общее количество часов за границей для отчета.

Последнее, по-видимому, повторяется для каждого элемента данных в отчете. Выражение фильтра, которое я использую, приведено ниже:

 CASE ?RelativeTimePrompt?

WHEN 'SelectTimeframe' THEN

([Arrival Date/Time] between ?TravelDateIntervallStart? and ?TravelDateIntervallEnd?
AND
[Departure Date/Time] between ?TravelDateIntervallStart? and ?TravelDateIntervallEnd?)

WHEN 'Last12m' THEN ( [Arrival Date/Time] between _add_days(getdate (),-365) and (getdate ()) AND [Departure Date/Time] between _add_days(getdate (),-365) and (getdate ()))

WHEN 'Last6m' THEN ( [Arrival Date/Time] between _add_days(getdate (),-183) and (getdate ()) AND [Departure Date/Time] between _add_days(getdate (),-183) and (getdate ()))

WHEN 'YTD' THEN (  [Arrival Date/Time] between _add_days(getdate (),((_day_of_year(getdate ())-
1)*-1)) and (getdate ()) AND [Departure Date/Time] between _add_days(getdate (),((_day_of_year(getdate ())-
1)*-1)) and (getdate ()))

END
 

Ответ №1:

«При проверке фильтра» — вы фактически запускаете функцию «проверить» для всего отчета. Хотя кнопка находится в диалоговом окне Выражение фильтра, она не связана с выражением фильтра, которое вы просматриваете в данный момент.

Найдите ошибки в том порядке, в котором они перечислены. Исправление первой ошибки часто приводит к исчезновению всех других ошибок.

  1. Найдите причину, по которой отчет считает, что он ограничен локальной обработкой.
  2. Найдите причину, по которой он не может найти Total Hours Abroad for Report .

Кроме того, вы рассматривали возможность упрощения вашего заявления о случае?

 WHEN 'Last12m' THEN [Arrival Date/Time]  >= _add_years (current_date, -1)
WHEN 'Last6m' THEN [Arrival Date/Time]  >= _add_months (current_date, -6)
WHEN 'YTD' THEN _year([Arrival Date/Time]) = _year (current_date)
 

Комментарии:

1. Похоже, что каким-то образом виновником была функция getdate(), во всяком случае, с вашим предложенным упрощенным описанием случая она работала без проблем до сих пор! Огромное спасибо!