Обновление параметров отчета на основе выбора параметров? (SSRS) - PullRequest
11 голосов
/ 27 июня 2009

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

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

Ответы [ 4 ]

13 голосов
/ 27 июня 2009

Это работает автоматически, если вы правильно упорядочиваете свои параметры и наборы данных

  • Сначала настройте основной набор данных (отчет), затем набор данных для каждого раскрывающегося списка параметров. Закодируйте предложение WHERE в наборах данных, чтобы сделать корректными зависимости между переменными параметров
  • Во-вторых, закажите ваши параметры в отчете | Меню параметров так, чтобы переменная / параметр first , которую вы хотите заполнить пользователем, находилась сверху, а второй набор данных зависел от этого параметра. Следуйте этому порядку через параметры; последние параметры должны быть теми, от которых зависит фактический набор данных отчета.
  • Повторите для последующих параметров

Это будет работать, если ваше предложение WHERE во втором и последующих наборах данных содержит переменные, которые, как известно SSRS, заполняются из более ранних параметров.

Например, у меня есть три набора данных из почтенной базы данных pubs (образец 2000 года).

pubslist используется для заполнения параметра @p и выглядит следующим образом:

 select pub_id, pub_name from publishers

titleslist заполняет параметр @t и выглядит так:

 select title_id, title from titles where pub_id = @p

Наконец, reportdataset выглядит так:

 select title, price, ytd_sales from titles where title_id = @t

Порядок параметров в меню Report | Report Parameters имеет решающее значение; поскольку наборы данных должны выполняться в указанном выше порядке, а параметр @t находится в наборе данных, основанном на параметре @p, который устанавливается первым, мы перемещаем @p в начало списка.

Теперь SSRS оценивает набор данных, необходимый для заполнения раскрывающегося списка для первого параметра метками. Он основан на наборе данных, который не нуждается в параметре, поэтому может быть создан немедленно.

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

3 голосов
/ 20 мая 2011

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

  1. Сначала создайте отчет с запросом и полями для отображения без каких-либо параметров. Таким образом, вы сможете установить основной набор данных отчета.
  2. обновить запрос набора данных, добавив параметр. всегда используйте @ перед param_name
  3. в представлении макета отчета щелкните правой кнопкой мыши и выберите параметры во всплывающем меню.
  4. список параметров будет автоматически иметь имя_параметра без знака @.
  5. выбрать параметр из списка и обновить его свойства ...
  6. при предварительном просмотре отчета он запросит значение, введенное для param_name, перед просмотром отчета ...

  7. теперь перейдите на вкладку данных и добавьте новый набор данных .... назовите его dsPopParam

  8. запрос будет использоваться для заполнения параметра param_name .... параметры здесь не нужны.
  9. повторите шаги с 3 по 5, но на шаге 5 измените настройку свойства в разделе Доступные значения на из запроса и выберите набор данных dsPopParam. Поля Value и Label будут полями, возвращаемыми из запроса dsPopParam.
  10. снова выберите вкладку просмотра и на этот раз обратите внимание на раскрывающийся список со списком параметров ....

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

3 голосов
/ 26 января 2011

Сначала вы создаете набор данных со списком элементов, из которых пользователь будет выбирать.

Select ID,Agentname from Agents Order by Agentname

Затем вы создаете второй набор данных;

например. Select ID,ItemName from Orders where agentid=@agentid

В параметре отчета вы нажимаете на параметр agentid, а затем в запросе на доступные значения. Вы выбираете dataset1 и ID в качестве значения и AgentName в качестве метки.

Ваш последний набор данных будет фактическими данными. В этом Вы создаете свое утверждение как:

Select Quantity, Amount From Orderdetails where OrderID=@orderid

В службе отчетов вы переходите к параметру и установленному Порядку, чтобы получить значение из набора данных2

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

2 голосов
/ 27 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...