SSRS - Использование выражений с операторами «If» и несколькими значениями параметров - PullRequest
0 голосов
/ 27 августа 2018

Поэтому я пытаюсь настроить динамический текст для отчета в SSRS с 4 полями пользовательских параметров, и я продолжаю сталкиваться с одной и той же ошибкой. Я все еще довольно плохо знаком с SSRS и Visual Basic, поэтому немного сложно понять сообщение об ошибке.

System.Web.Services.Protocols.SoapException: The Value expression for the textrun 
‘Textbox2.Paragraphs[2].TextRuns[1]’ contains an error: [BC33104] 'If' operator
requires either two or three operands.

4 поля параметров: beginYear, beginMonth, endYear и endMonth. Ниже приведен код, который я имею в выражении:

If (bYear = eYear) And (bMonth = 1) And (eMonth = 3)
"3rd Quarter January - March " & eYear

ElseIf  (bYear = eYear) And (bMonth = 4) And (eMonth = 6)
"4th Quarter April - June " & eYear

ElseIf  (bYear = eYear) And (bMonth = 7) And (eMonth = 9)
"1st Quarter July - September " & eYear

ElseIf  (bYear = eYear) And (bMonth = 10) And (eMonth = 12)
"2nd Quarter October - December " & eYear

ElseIf  (bYear = eYear) And (bMonth = 1) And (eMonth = 12)
"Calendar Year " & eYear

ElseIf  (bYear = eYear) And (bMonth = eMonth)
eYear & " " & eMonth 

ElseIf  (((Convert.toInt32(bYear)) = (Convert.toInt32(eYear)) - 1) And (((Convert.toInt32(eYear)) = (Convert.toInt32(bYear)) + 1) And (bMonth = 7) And (eMonth = 6)
"Fiscal Year " & bYear & "-" & eYear

Else
             bMonth & " " & bYear & "-" & eMonth & " " & eYear
End If

Таким образом, если я выбрал следующие параметры из отчета следующим образом (в параметрах месяца я присвоил числовые значения месяцам):

-Begin Year=2018
-Begin Month=April
-End Year=2018
-End Month=June

Я должен увидеть следующее выражение в текстовом поле отчета => «4-й квартал, апрель - июнь 2018 года»

1 Ответ

0 голосов
/ 28 августа 2018

Это не формат If в SSRS. Смотри ниже:

=Iif(Parameters!yourParameter.Value = Parameters!yourAnotherParameter.Value, "value if true", "value if false")

Для вашего случая вы должны использовать Switch.

=Switch(Parameters!yourParameter.Value = Parameters!yourAnotherParameter.Value 
        AndAlso Parameters!yourParameter.Value = "something else"
        AndAlso Parameters!yourParameter.Value = "again something else", "desired output if all condition are met", 
        Parameters!yourNextParameter.Value = Parameters!yourNextAnotherParameter, "desired output if this condition is met")
...