Я искал способ сделать это сегодня, и есть много предложений, которые требуют создания хранимой процедуры для обработки этого, но я нашел это решение немного беспорядочным. Наконец-то я придумал свое собственное, очень простое решение.
Итак, скажем, вы хотите, чтобы пользователь мог вводить несколько заказов на продажу в одно текстовое поле, разделенные запятыми, например: 61JF073, 61SW073, 61SW074
Мой первый параметр отчета называется «Номер заказа», описание «Номера заказов (разделенные запятой)». Тип данных = "Текст", и ничего не проверяется.
Мой второй параметр возьмет список из первого параметра и создаст список «Несколько значений», который вы сможете использовать в своем SQL-запросе.
Второй параметр: Имя = "OrderNos", тип = "Текст". «Разрешить несколько значений» отмечен флажком. Параметр видимости = "Внутренний" (пользователю это видеть не обязательно). Доступные значения = Нет. Значения по умолчанию = Укажите значения. Добавьте значение: =Split(Replace(Parameters!OrderNo.Value," ",""),",")
Я использую функцию «Заменить», чтобы удалить все пробелы, поскольку пользователи могут вводить пробелы после запятых, что повлияет на вывод.
Теперь ваш SQL-запрос может содержать предложение «IN» для фильтрации результатов.
SELECT OrderNo, SalesID, SalesName
FROM SalesOrders
WHERE OrderNo IN (@OrderNos)
Данные будут отфильтрованы на сервере SQL, а не в отчете SSRS, который является предпочтительным методом, чтобы сохранить отчет SSRS от извлечения всей таблицы перед применением фильтра. Вы хотите получить только данные, необходимые для отчетности.
Я надеюсь, что это поможет, так как это было спасением для меня, поскольку моя таблица заказов на продажу содержит много тысяч строк.
person
Jon Thurgood
schedule
14.01.2014