SSRS: Условные доступные значения с дополнительным пользовательским вводом

#reporting-services

#службы отчетов

Вопрос:

Таковы были требования, предъявляемые к отчету SSRS:

  1. Выпадающий список для быстрого изменения дат на заданные диапазоны, такие как «С начала года» или «Последние 12 месяцев»
  2. Выбранный параметр в раскрывающемся списке должен храниться в базе данных для каждого пользователя и извлекаться при открытии отчета
  3. Даты должны иметь возможность редактировать напрямую, независимо от того, что было выбрано

Проблема в том, что параметры не каскадируют свои значения по умолчанию без обновления, требуя повторного запуска отчета для вступления в силу и сохранения параметра, а затем обновления для фактического заполнения «значений по умолчанию» для даты. Это можно исправить, используя вместо этого «Доступные значения», но это означает, что поля даты больше не будут доступны для редактирования.

Ответ №1:

Кому-то это может показаться простым, но меня это немного озадачило. Это решение, которое теперь работает.

Необходимо использовать следующие параметры: RangeOption, StartDate, EndDate, StartDateCustomInput, EndDateCustomInput

Сначала нам нужно создать таблицу в базе данных для хранения пользовательских настроек отчета. SSRS имеет встроенное поле для идентификатора пользователя, поэтому его можно передать, чтобы запомнить, какой была последняя «опция диапазона» пользователя.

введите описание изображения здесь

Мы следим за этим, создавая две хранимые процедуры, одна из которых получает параметр последнего запуска для пользователя, а другая устанавливает его. Имя пользователя SSRS является встроенным полем идентификатора пользователя.

введите описание изображения здесь

Процедура настройки должна быть помещена в набор данных, который обновит и сохранит «Параметр диапазона» при выборе выпадающего списка.

введите описание изображения здесь

Выпадающий параметр будет использовать процедуру получения в качестве своего «Значения по умолчанию». В разделе Дополнительно убедитесь, что для этого параметра установлено значение «Никогда не обновлять«.

введите описание изображения здесь

Чтобы даты обновлялись автоматически без необходимости повторного запуска отчета и обновления, нам нужно вместо этого использовать «Доступные значения». Подключите любое выражение, которое вы хотите использовать, которое ссылается на выпадающий параметр (@RangeOption). Загвоздка в том, что из-за этого дата не может быть отредактирована.

введите описание изображения здесь

Чтобы сделать дату доступной для редактирования, необходимо создать второй параметр даты для наших начальных и конечных дат. Эти даты будут использовать «Значения по умолчанию», которые просто захватывают все, что есть в исходных параметрах даты начала и окончания. Затем укажите все элементы нашего отчета на редактируемые поля даты (@StartDateCustomInput,@EndDateCustomInput).

введите описание изображения здесь

Теперь выпадающий список изменяет исходные параметры даты, которые затем изменяют редактируемые параметры даты, без запуска отчета. Редактируемые параметры можно сначала изменить, если пользователь захочет, и отчет будет выполняться с тем, что указано в этих пользовательских параметрах даты. Недостатком является то, что исходные параметры даты, похоже, не каскадируются, если они скрытые / внутренние, поэтому вам, вероятно, потребуется иметь повторяющиеся видимые параметры даты.

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