Я новичок на сайте и не могу понять, как прокомментировать предыдущий ответ, что, как я считаю, должно быть. Я также не смог проголосовать за пост Джеффа, который, как мне кажется, дал мне мой ответ. В любом случае ...
Хотя я могу видеть, как работают некоторые замечательные посты и последующие настройки, у меня есть доступ только для чтения к базе данных, поэтому никакие UDF, SP или решения на основе представления не работают для меня. Таким образом, решение Эда Харпера выглядело хорошо, за исключением комментария VenkateswarluAvula о том, что вы не можете передавать строку с разделителями-запятыми в качестве параметра в предложение WHERE IN и ожидать, что она будет работать так, как вам нужно. Но решение Джеффа о ORACLE 10g заполняет этот пробел. Я собрал их вместе с сообщением в блоге Рассела Кристофера на http://blogs.msdn.com/b/bimusings/archive/2007/05/07/how-do-you-set-select-all-as-the-default-for-multi-value-parameters-in-reporting-services.aspx, и у меня есть решение:
Создайте свой многовариантный параметр MYPARAMETER, используя любой источник доступных значений (возможно, набор данных). В моем случае, мультивыбор был из набора записей TEXT, но я уверен, что с некоторыми изменениями он будет работать с другими типами. Если вы хотите, чтобы «Выбрать все» было положением по умолчанию, установите тот же источник, что и по умолчанию. Это дает вам ваш пользовательский интерфейс, но созданный параметр не является параметром, переданным в мой SQL.
Переходя к SQL и решению Джеффом проблемы WHERE IN (@MYPARAMETER), у меня возникла проблема полностью моя, в которой одно из значений ('Charge') появляется в одном из других значений (' Non Charge '), то есть CHARINDEX может найти ложноположительный результат. Мне нужно было найти параметр для значения с разделителями до и после. Это означает, что мне нужно убедиться, что разделенный запятыми список также содержит начальную и конечную запятую. А это мой фрагмент SQL:
where ...
and CHARINDEX(',' + pitran.LINEPROPERTYID + ',', @MYPARAMETER_LIST) > 0
Немного посередине - создать еще один параметр (скрытый в производстве, но не в процессе разработки) с помощью:
- Имя MYPARAMETER_LIST
- Тип текста
- Одно доступное значение
="," +
join(Parameters!MYPARAMETER.Value,",") + ","
и метка,
на самом деле не имеет значения (так как он не будет отображаться).
- Значение по умолчанию точно такое же
- Просто чтобы быть уверенным, я установил Always Refresh в обоих параметрах 'Advanced
Свойства
Именно этот параметр передается в SQL, который просто является строкой с возможностью поиска, но который обрабатывает SQL, как любой фрагмент текста.
Я надеюсь, что объединение этих фрагментов ответов поможет кому-то найти то, что они ищут.