Записи SSRS не отображаются, когда используется (выберите все), но при выборе особого значения
У меня есть отчет, который имеет параметр с несколькими значениями. Он имеет доступные значения (1, 2, 3, 4, 5 и пустой). Пустое значение не равно NULL, это просто пустая ячейка.
Для целей тестирования должна появиться только одна запись. Запись имеет пустое значение в ячейке, которую я использую для фильтрации в моей хранимой процедуре.
В выпадающем параметре я вижу все параметры. Если я выберу вариант (Выбрать все), я не получу запись, которую я хочу. Однако, если я выберу только пустое значение, я получаю запись, которую я хочу. Я обновил запись вручную до «2». Я выбираю (Select All), и я получаю запись. Я выбираю только значение «2», и я получаю запись. Если я снова удалю значение, чтобы сделать значение пустым, я получаю запись только в том случае, если я выберу только вариант «Пустое» в раскрывающемся списке.
- Как удалить URL веб-службы сервера отчетов из диспетчера конфигурации Reporting Service Configuration Manager
- Цвет клиента в выражении IIF -SSRS
- Отправить отчет SSRS по электронной почте
- Результат SSRS отличается от результата SSMS тем же запросом
- Разрешить множественные значения в SSRS
Я создаю текстовое поле для вывода значения параметра, и оно отображается пустым, когда оно выбрано либо само по себе, либо другими значениями.
Что мне не хватает в моей хранимой процедуре или в моем отчете? Заранее спасибо.
- Как настроить SQL Azure Reporting?
- Форматирование цвета SSRS на основе параметра
- Сброс параметров SSRS при изменении параметра даты
- Форматирование ячеек матрицы SSRS
- Определение отчета имеет недопустимое целевое пространство имен rsInvalidReportDefinition
- Динамические параметры SSRS, прошедшие через заголовок страницы
- Как установить описание папки во время развертывания с помощью Visual Studio?
- # Ужасно даже после использования IIF, чтобы избежать деления на нуль в выражении
Когда у вас есть параметр множественного выбора, SSRS должен отправить список сохраненных в запятую значений в хранимую процедуру. Вы несете ответственность за их разделение на то, к чему вы можете присоединиться.
В самом отчете вы не получите список значений в красиво завернутой строке для отображения. Мне пришлось использовать код для повторения значений в параметре.
Я тестировал, что делает SSRS, когда у вас есть пустое доступное значение. Я создал тестовый отчет с шестью доступными параметрами, а затем хранимую процедуру для принудительного вывода выбранных значений:
CREATE PROCEDURE dbo.Test_RPT ( @TestMultiSelect varchar(1000) ) AS SELECT @TestMultiSelect RVAL
В отчете у меня просто было одно текстовое поле, отображающее это поле RVAL
.
Если я поставлю пустую опцию в начале, выход будет 1,2,3,4,5
. Если пустая опция находилась в любом другом месте, она включала: 1,2,3,,4,5
, 1,2,3,4,5,
В случаях, когда необходимо передать несколько значений в раздел Sql IN в хранимую процедуру из набора данных отчета SSRS, необходимы небольшие изменения в хранимой процедуре:
См. Предложение Sample WHERE в SP
... AND Courses.Type_Code IN (@Type_Code)
Добавьте функцию SplitString () для разделения переданных параметров на основе разделителя.
Тело SplitString () будет выглядеть так:
CREATE FUNCTION [dbo].[SplitString] ( @pString VARCHAR(8000), @pDelimiter CHAR(1) ) RETURNS @Values TABLE (Value VARCHAR(50)) AS BEGIN DECLARE @xml as XML; SET @xml = cast(('<X>'+replace(@pString, @pDelimiter, '</X><X>')+'</X>') as xml); INSERT @Values SELECT N.value('.', 'varchar(50)') as value FROM @xml.nodes('X') as T(N); RETURN END;
Наконец, предложение IN будет выглядеть так:
... AND Courses.Type_Code IN (SELECT * FROM dbo.SplitString(@type_code,','))