Службы Reporting Services: переопределение параметра по умолчанию с помощью выражения в связанном отчете - PullRequest
3 голосов
/ 08 апреля 2009

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 16 апреля 2009

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

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

0 голосов
/ 09 апреля 2009

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

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

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

...