В SSRS параметр даты и времени в режиме предварительного просмотра не соответствует развернутому отчету.Это кто-то еще сталкивался?Код RDL идентичен.Является ли тот факт, что иногда локальный предварительный просмотр является просто симуляцией функциональности?Это потому, что при предварительном просмотре иногда используются кэшированные данные?
У меня есть отчет SSRS, в котором при предварительном просмотре в Visual Studio локально дата отображается как 2/10/2019, но при развертывании кода RDLна сервере дата показывается как 07.02.2009.Переменная даты и времени основана на параметре в отчете, называемом rundate, и имеет значение по умолчанию 2/10/2019.Поэтому я думаю, что то же самое должно произойти на сервере отчетов, что происходит локально в режиме предварительного просмотра.
В отчете есть четыре набора данных, и в качестве теста я установил каждые четыре, чтобы в строке SQL была задана строказначение примерно так: SET @rundate = '2019-02-10', но на сервере отчетов, когда я загружаю отчет, он выдает эту ошибку: необходимо объявить скалярную переменную "@rundate".Необходимо объявить скалярную переменную "@rundate".Оно находится в каскадном сообщении об ошибке со вкладкой, которое выглядит следующим образом: во время рендеринга клиента произошла ошибка.Произошла ошибка во время обработки отчета.Не удалось выполнить запрос для набора данных 'ThirdDataset.Необходимо объявить скалярную переменную "@rundate".Необходимо объявить скалярную переменную "@rundate".
Итак, почему она запускается локально, а не на сервере?«ThirdDataset» - это ложное имя, которое я дал здесь.Фактическое имя отредактировано.Но я заметил, что это будет первый запуск набора данных, если он будет выполняться в алфавитном порядке.Таким образом, это приводит меня к вопросу: почему отчет не распознает это как параметр и почему он жалуется, что не объявлен?
=========== *
ОБНОВЛЕНИЕ:
Я настроил рундат как часть управляемой данными подписки в отчете, например так:
ВЫБРАТЬ преобразование (дата, DATEADD (ДЕНЬ, -2,SYSDATETIME ())) rundate
То есть два дня назад.Поскольку сегодня 2/11/2019, параметр rundate, передаваемый в отчет SSRS на сервере, должен быть 2/9 / 2019.
Для интереса, чтобы проверить это, я установил параметр rundate Default Valueбыть 8/8/2018 в надежде, что отчет, управляемый данными, установит его правильно.
В режиме предварительного просмотра локально в Visual Studio,текстовое поле, в котором должно отображаться выражение [@rundate], показывает 8/8/2018, чего я и ожидал, но наборы данных предназначены для запуска этого параметра.Поскольку нет ничего, что sql должен извлечь из базы данных, которая является старой, графики и диаграммы в режиме предварительного просмотра должны оказаться полностью пустыми.Почему они показывают данные?!
Далее, давайте посмотрим, что говорит оповещение по электронной почте о подписке.У него была дата 2/11/2019 12:00:00 утра.Если подписка, управляемая данными, запускается так, как если бы она выполнялась, она должна иметь дату 02.09.2009 из
SELECT convert (date, DATEADD (DAY, -2, SYSDATETIME ())) какrundate
Почему это не сработало?
На сервере SSRS RDL-файл имеет значение по умолчанию для параметра 2/11/2019 12:00:00 AM, но почему отчет получилЭто значение по умолчанию?Что я делаю не так и как я могу это исправить?
В качестве теста я установил для этого параметра даты / времени по умолчанию значение 12:12:34 для своего времени, чтобы увидеть, что произойдет.Выяснилось, что да, это отметка даты и времени, которая отправляется в отчет.Поэтому я снял флажок «Имеет значение по умолчанию»
Затем я заметил, что на шаге 5 управляемой данными подписки я не смог перейти к следующему> без внесения небольших изменений:
Итак, что должно произойти?Это покажет странное значение 8/8/2018?Будет ли отображаться дата двух дней назад?