Поля нельзя использовать в выражении параметра отчета

Я должен указать start_date моего отчета в зависимости от параметра отчета. Метки времени вычисляются в запросе базы данных.

мое выражение выглядит так:

=SWITCH (
    Parameters!report_type.Value = 1,First(Fields!daily_start.Value, "Timestamps")
    ,Parameters!report_type.Value = 2,First(Fields!weekly_start.Value, "Timestamps")
    ,Parameters!report_type.Value = 3,First(Fields!monthly_start.Value, "Timestamps")
)

к сожалению, я получаю сообщение об ошибке:

выражение значения, используемое для параметра отчета "time_from", относится к полю. Поля не могут использоваться в выражении параметра отчета

Я знаю, что это не разрешено, потому что SSRS не может быть уверен, в каком порядке вызываются наборы данных. Но я думаю, что это не опасно.

все отметки времени получены запросом без параметра. Параметр report_type выбирается пользователем до создания отчета.

может кто-нибудь дать мне подсказку для решения проблемы?

3 ответов


вот обходной путь - получить значение с помощью SQL.

создайте новый набор данных под названием StartDates:

SELECT CASE 
    WHEN @report_type = 1 THEN daily_start
    WHEN @report_type = 2 THEN weekly_start 
    WHEN @report_type = 3 THEN monthly_start
END AS StartDate
FROM MyTable

у вас уже есть @report_type и @time_from параметры. С @time_from параметр, установите его значения по умолчанию в Get values from a query использование набора данных StartDates и поля значения StartDate.

теперь вы думаете, что этого может быть достаточно, чтобы заставить его работать - вы ссылаетесь на этот запрос как на значение по умолчанию и при изменении другой параметры обновления, но первая дата в


я переключился с запроса на хранимую процедуру и получал эту ошибку. Вещи, которые я пробовал:

  • гарантировал, что у меня было достаточное разрешение на базу данных (вам нужны права EXEC или DBO для запуска sproc)
  • удалить существующие параметры (а затем использовать поля обновления, чтобы обновить/получить правильно названные)
  • удалите квадратные скобки вокруг хранимой процедуры, если вы указали, что

иногда выражения могут быть немного подробными. Я создал функцию кода отчета, а затем использовал ее в качестве значения параметра.

например, я создал функцию кода под названием "CalculateDateSet", а затем установил параметр отчета в это выражение:

"=код.CalculateDateSet (Параметры!Месяц.Значение, Параметры!Год.Значение"