Использование параметра в качестве фильтра — несколько значений не работают

#reporting-services #ssrs-2012

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

Вопрос:

Отчет работает только для 1 варианта, но когда я добавляю более одного, он ничего не возвращает (никаких ошибок, просто ничего в отчете).

Мой оператор SQL включает параметр @Region

where Region_Name IN (@Region)

В свойствах параметра Region я установил разрешение на несколько значений.

в свойствах фильтра набора данных:

Выражение: =Fields!Region.Value
Оператор: IN
Значение: =Parameters!Region.Value(0)

* РЕДАКТИРОВАТЬ Я удалил фильтр набора данных, как было предложено.

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

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

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

Комментарии:

1. Почему вы ссылаетесь на Region параметр в обоих Expression и Value ?

2. @iamdave, честно говоря, не совсем уверен. Я следил за потоком и адаптировался.

3. Я обновил свой вопрос до использования параметра @Region в инструкции SQL

4. Использование =Parameters!Region.Value(0) задает первое значение параметра с (0) помощью . Попробуйте просто использовать =Parameters!Region.Value .

Ответ №1:

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

 select cols
from table
where specificcol in @Region
 

И затем не устанавливайте фильтр набора данных, просто убедитесь Region , что на странице свойств есть ссылка на параметр Parameters . Фильтрация данных выполняется путем включения параметра в SQL, поэтому вам не нужно также устанавливать фильтр для набора данных SSRS.

Комментарии:

1. Здравствуйте, да, я ссылаюсь на параметр в моем коде SQL, ГДЕ Region_Name В (@Region) Я удалил фильтр из набора данных, как вы предложили. Я не уверен в этом: убедитесь, что на странице свойств параметров есть ссылка на параметр Region Я обновлю свой пост фотографиями свойств параметра>

2. @Brent Добавленное изображение предназначено для свойств параметра, тогда как я имею в виду страницу параметров в окне свойств набора данных. Прошу прощения, я мог бы объяснить это немного лучше.

3. Извините за это. Да, параметр отображается в свойствах набора данных. Я вызываю процедуру хранения и нашел статью, в которой мне может понадобиться немного по-другому обращаться к параметру. Я попробовал это =JOIN (Параметры! Регион. Значение,»,») в окне выражения значения параметра, но тот же результат отчета работает с 1 выбранным выбором, но не работает с более чем 1 выбором

4. Использование объединения в значении параметра не сработало, но я думаю, что мои проблемы связаны с тем, что я использую хранимую процедуру и передаю значения параметров @Region.

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

Ответ №2:

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

Выражение: =Поля!Регион.Оператор значения: В значении: =Параметры!Регион.Значение

При первом создании значения добавляется (0) в конец выражения. Удалите это, и все будет работать так, как ожидалось.

Спасибо @iamdave за помощь!

Редактировать:

Я вернулся к этому и смог выполнить фильтрацию с использованием параметра и хранимой процедуры.

Я перешел по ссылке из вопроса сюда: http://www.codeulike.com/2012/03/ssrs-multi-value-parameters-with-less.html

Я создал параметр dataset и удалил его из свойств табликса. Затем создал предоставленную функцию, и она сработала. Я не связывался со «ВСЕМИ» функциями в сообщении.

Спасибо за все советы. Брент

Комментарии:

1. Итак, вы знаете, что это не фильтрация вашего запроса. Запрос возвращает весь ваш набор данных, а в отчете используются только те данные, которые соответствуют фильтру. Гораздо эффективнее фильтровать SQL, как в моем ответе, чем просто набор данных. Кроме того, указание того, что ваш набор данных вызывает хранимую процедуру, является важной информацией, которая не учитывалась в вашем вопросе.

2. Дэйв (@iamdave), да, я знаю, что использую весь набор данных, но это небольшая таблица всего с несколькими тысячами строк. В идеале я бы настроил его с помощью параметра, но после того, как я понял, что мне нужно будет проанализировать данные, я выбираю более быстрый путь для выполнения задачи. Мне все еще интересно выяснить, как это сделать правильно. Да, я пропустил это и прошу прощения. Я работаю с SSRS совсем недавно, так что многое из этого для меня ново, и это то, что я просто пропустил. Спасибо за обратную связь и помощь. Брент