Службы Reporting Services: переопределение параметра по умолчанию выражением в связанном отчете

Итак, у меня есть отчет «ежедневная панель мониторинга» в SSRS 2005. У него есть параметр @pDate, который по умолчанию равен «= Now».

Я хотел бы использовать этот же отчет в связанном отчете, чтобы показать вчерашнюю окончательную панель мониторинга (которая затем будет отправлена ​​по почте по подписке) и переопределить параметр по умолчанию другим выражением "= dateadd(d,-1,Now). " Но когда я меняю параметр по умолчанию, я получаю ошибку несоответствия данных (natch).

Я предполагаю, что это конец строки, и мне просто нужно развернуть копию ежедневного отчета панели инструментов с @pDate по умолчанию вчера, но я подумал, что опубликую здесь и посмотрю, есть ли у кого-нибудь изящный ярлык для выполнения этого без необходимости поддерживать два RDL.

ОБНОВЛЕНИЕ: я нашел это на MSDN:

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

«Расширение обработки данных», по-видимому, переводится на SQL-сервер, поэтому я попробовал допустимые одноэлементные выборки, которые не были константами (GETDATE(), «04/27/» + YEAR (GETDATE()) и т. д.), и все еще ничего.


person Kyle Hale    schedule 07.04.2009    source источник


Ответы (2)


Итак, я обнаружил свою проблему: если в вашем основном отчете есть подотчеты, в которых используются сквозные параметры из основного отчета, убедитесь, что все ваши параметры в ваших подотчетах используют один и тот же тип данных. Два моих подотчета использовали тип данных String для поля @pDate вместо DateTime, поэтому подписка не удалась (хотя по какой-то причине действующая версия отчета допускает это несоответствие).

Сейчас я использую управляемую данными подписку для динамической установки @pDate, и, похоже, все работает нормально.

person Kyle Hale    schedule 15.04.2009

Я не проверял это, но вы можете попробовать добавить в отчет второй параметр (без значения по умолчанию — назовите его pDateOverride ради аргумента), а затем изменить значение по умолчанию для pDate, чтобы оно было выражением, использующим новое значение, если он присутствует, иначе Now(). Что-то типа:

=Iif(IsEmpty(Parameters!pDateOverride.Value),Now(),Parameters!pDateOverride.Value)

Затем вы можете установить pDateOverride при вызове отчета для создания итоговой панели мониторинга за вчерашний день.

person Ed Harper    schedule 09.04.2009
comment
Эй, это действительно отличная идея в целом, но она просто снова ставит исходную проблему: как программно установить pDateOverride со вчерашней датой. - person Kyle Hale; 16.04.2009