Добавление параметра в построителе отчетов SSRS со значениями строки / varchar, но поле в SQL является числовым - PullRequest
0 голосов
/ 23 апреля 2019

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

Что я имею в виду под этим:

В таблице есть поле, к которому обращается запрос: ErrorLevel, в котором хранятся числовые значения (1, 2, 3, 4). Однако каждому из этих значений соответствует текстовая строка.

1 - Предупреждение;

2 - Переопределить;

3 - ограничение;

и 4 ожидают рассмотрения.

Эти текстовые строки - это то, что отображается при фактическом запуске отчета. Я могу просто создать параметр, используя следующий запрос.

Параметр №. 1

SET NOCOUNT ON
(Select '' as errorlevel
union
select distinct errorlevel from [TABLE] 
where errorlevel is not null and errorlevel != ''

Отчет SQL

Select distinct 
case errorlevel
When 1 then 'Warning'
When 2 then 'Override'
When 3 then 'Restriction'
When 4 then 'Pending'
Else '' as errorlevel
from [TABLE] 
where ('<ALL>' in (@errorlevel) or errorlevel in (@errorlevel))

Но проблема в том, что когда конечный пользователь запускает отчет и выбирает отчет, он видит числовые значения (1, 2, 3 или 4), но ему хотелось бы видеть / выбирать строковые значения (Предупреждение, Переопределение, ограничение, ожидание). Я попытался использовать следующий запрос.

Параметр № 2

SET NOCOUNT ON
(Select '<ALL>' as errorlevel
union
select distinct 
CASE ErrorLevel 
When 1 then 'Warning'
When 2 then 'Override'
When 3 then 'Restriction'
When 4 then 'Pending'
Else '' as errorlevel
from [TABLE] 
where errorlevel is not null and errorlevel != ''

Когда я использую это, параметр передает строковые значения SQL в отчете в виде строки, а не в виде числа, и тогда отчет остается пустым. Я знаю, что должен сделать что-то в SQL, чтобы взять то, что передается параметром (например, Warning, Override и т. Д.), И преобразовать это в соответствующие числовые значения, но не уверен, как это сделать. Любое руководство приветствуется.

1 Ответ

0 голосов
/ 24 апреля 2019

Я бы добавил поле к запросу в SQL или Набор данных в SSRS, чтобы преобразовать число в нужный текст.

Вы можете использовать тот же оператор CASE для SQL

Select <CURRENT FIELDS>, 
CASE ErrorLevel When 1 then 'Warning' When 2 then 'Override' When 3 then 'Restriction' When 4 then 'Pending' Else '' END as ErrorLabel
from <REST OF QUERY>

Если вы не можете сделать это в запросе (из-за использования хранимого процесса или другой проблемы), вы можете добавить Расчетное поле к набору данных в SSRS.

  • Откройте (дважды щелкните) свой набор данных и нажмите на вкладку Поля.

  • Нажмите кнопку Добавить и выберите Расчетное поле.

  • Дайте вашему новому полю имя (ErrorLabel)

  • для выражения, используйте оператор SWITCH (который похож на неработающий оператор CASE)

    =SWITCH(Fields!ErrorLevel.Value = 1, "Warning", 
        Fields!ErrorLevel.Value = 2, "Override", 
        Fields!ErrorLevel.Value = 3, "Restriction", 
        Fields!ErrorLevel.Value = 4, "Pending", 
        1 = 1, "" )
    
...