Подтвердить что ты не робот

Использование оператора IN для фильтрации в службах отчетности

Может ли кто-нибудь сообщить, какой синтаксис должен быть при использовании оператора IN внутри фильтра таблицы. Я пробовал ниже, но snytax не прав:

enter image description here

4b9b3361

Ответ 1

Если вы просто измените свойство Значение и просто добавьте список значений, который должен работать:

enter image description here

В любом случае это помогло мне в быстрой проверке.

Интернет-книги, по-видимому, довольно легкие на примерах, но я нашел одну ссылку; см. пример In в Commmonly Used Filters. Было бы хорошо, если бы это было объяснено лучше.

Ответ 2

У меня были некоторые проблемы с этим. Microsoft собственной документации указывает, что в поле Значение должен быть указан простой список значений с разделителями-запятыми. Это сбивает с толку, потому что это НЕ. По крайней мере, это не для меня, и я использую SSRS 2012 с Visual Studio 2010.

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

Первый способ (также объясненный в блоге, приведенном ниже) - просто ввести список с разделителями-запятыми в строковое значение, а затем использовать функцию split на нем.

=split("2B,2C",",")

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

=Parameters!MultiValueParam.Value

Я узнал эту информацию через следующий блог. http://sqlblogcasts.com/blogs/simons/archive/2007/11/20/RS-Howto--Use-the-IN-operator-in-a-filter-expression.aspx

Ответ 3

Это действительно работает:

=CStr("Value1,Value2,Value3,Value4,etc").Split(",")

Это проверено в SSRS 2012.

Ответ 4

Удалите из выражения выражение =, т.е.

"criteria one" , "criteria two"

Ответ 5

Если рекомендуемое решение как-то не работает для вас, попробуйте использовать полуконференцию в качестве разделителя.

Пример: критерии 1; критерии два

Это сработало для меня.

Ответ 6

Это работало для меня в SSRS 2012.

"критерии один", "критерии два"

Ответ 7

Для целых значений вы можете использовать:

Тип: Текст

Оператор: В

Значение: = Новое целое число() {8800,8820}

Должен работать в 2008 R2 и более поздних версиях

Ответ 8

"value1" "value2"

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

value1, value2

с запятой и без кавычек. Если я обрежу это, а затем вставлю прямо обратно в то же поле, это не сработает. Это какая-то ошибка...

Базовым типом данных является nvarchar (10), а не нуль

Протестировано с VS 2017 и SSRS 2016

Ответ 9

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

Выражение

= InStrRev (полная строка с разделителем, значение для поиска)

Тип: Целое число

Оператор: < >

Значение: 0

Ответ 10

Введите этот запрос в выражение:

=Join(Parameters!MultiValueParam.Value)

Ответ 11

Мои значения включали косые черты. Единственный способ заставить оператора SSRS In      ▼ корректно обрабатывать их был с выражением = CStr("google / cpc,bing / cpc").Split(",")

Ответ 12

Возможно, у меня более поздняя версия SSRS. Значения типа текстовые. Для меня работал как,

"criteria 1";"criteria 2";...;"criteria N"

Двойные кавычки обязательны.

Ответ 13

OMG так много ответов...
Я знаю, что это работает:

1) MY SP returns VARCHAR(n) for the field I will filter in the tablix. Returning INT DOES NOT WORK in my solution. I don't know why (yet).       
2) report.param.allow multiple values = true  
3) tablix.filter.expression.datatype = text  
4) tablix.filter.operator = IN  
5) tablix.filter.value = =SPLIT(JOIN(Parameters!id.Value,","),",") 

Используя этот метод, я смог вызвать SP один раз, использовать его в параметре, чтобы получить доступные значения, запустить отчет, и таблица tablix прочитала выбранные данные из шага № 5 выше и отобразила правильное количество строк.

Ответ 14

Универсальное решение:

Выражение: [columnName]

Оператор: в

Значение: [@parameterName]