2013-08-13 2 views
2

У меня есть хранимая процедура, которая возвращает около 100 строк. Один столбец - категория.Показать все записи/некоторые записи на основе значения параметра

В SSRS я создал DataSet, относящийся к этой хранимой процедуре. В блоке Report у меня есть Tablix, который я отношу к DataSet.

Теперь у меня есть дополнительный параметр, называемый FilterColumn, который состоит из разных категорий из набора данных, плюс одна строка под названием «Все продукты».

Как фильтровать tablix на основе этого параметра, чтобы показать мне продукты из определенных категорий или всех продуктов?

+0

Является ли параметр одиночным или многозначным? Есть ли причина, по которой вы не можете фильтровать на уровне хранимой процедуры, например. данные используются в другом месте отчета? –

+0

Фактически, для демонстрационной цели, чтобы показать изменение фильтра. Параметр однозначен. – veljasije

+0

Еще один, извините ... Ваш параметр называется ** Sorting **, но он фактически используется для * фильтрации * Tablix. Это верно? Это кажется немного запутанным. –

ответ

2

я создал какое-то решение и работал для меня:

enter image description here

В Expression поле, я ставлю первое выражение:

1. Iif(Parameters!FilterColumn.Value = "All", 1, Fields!Category.Value) 

В Value поле, я поставил второе выражение:

2. Iif(Parameters!FilterColumn.Value = "All", 1, Parameters!FilterColumn.Value) 

Поэтому, когда я выбираю значение «Все» в параметре, тогда первое выражение будет иметь результат 1, а второе выражение будет иметь 1, и у меня есть 1 = 1, что верно для всех строк, и я получил все строки в таблице.

Когда я выбираю конкретную категорию из параметра, тогда в результате выражения будет Fields!Category.Value, а во втором выражении будет Parameters!FilterColumn.Value. Простой, я получил Fields!Category.Value = Parameters!FilterColumn.Value или просто дал мне строки, в которых категория выбрана в параметре.

0

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

+0

Или вы можете щелкнуть правой кнопкой мыши по столбцу, который вы хотите отсортировать в своем Tablix. Свойства Tablix -> Select Sorting -> Column для сортировки. –

+0

История isabout фильтрация не сортировка, и путаница заключается в том, что я назвал параметр Sorting. Теперь я исправляю это, извините :) – veljasije

3

Вам нужно настроить фильтр, подобный следующему:

enter image description here

Если выражение является:

=IIf(Parameters!FilterColumn.Value = Fields!Category.Value 
     or Parameters!FilterColumn.Value = "All products" 
    , "Include" 
    , "Exclude") 

Это соответствует строке Категории на основе значения параметра, или, если значение = All products, будет включать все строки.

Как упоминается в комментариях и другом ответе, это возможно и в SP, но поскольку, похоже, именно для демонстрации функциональности это должно сделать трюк на уровне отчета.

+0

будет ли это работать с множеством фильтров, но только один будет заполнен? –