13

在 rdlc 报告中,我想比较整数,例如

if(expression)
{
     // do something
}
else if(expression)
{
     // do something else
}

这个的语法是什么?

4

6 回答 6

43

我更喜欢使用Switch语句,而不是使用嵌套的IIF语句。

从 MSDN...

=Switch(
    Fields!PctComplete.Value >= 10, "Green", 
    Fields!PctComplete.Value >= 1, "Blue", 
    Fields!PctComplete.Value = 1, "Yellow", 
    Fields!PctComplete.Value <= 0, "Red"
    )

希望它有帮助:)

于 2009-06-16T06:51:47.150 回答
9

您必须像这样嵌套 IIF 语句:

 = IIF (expression = 1, "Is 1", IIF (expression = 2, "Is 2"))
于 2009-06-16T06:44:10.480 回答
2

改用开关。我知道我来晚了,但希望它可以帮助别人。

=Switch(Fields!Parameter.value = 2,"somethingnew", 1=1 ,"somethingelse")

1=1 表示 switch case 中的默认值。

它类似于

if(Parameter.Value == 2)
{
somethingnew
}
else
{
somethingelse
}
于 2016-07-11T08:22:24.420 回答
1

这是满足您要求的语法:

=IIf(CInt(Fields!expression1.value)==1,true,IIf(Cint(Fields!expression2.value)==2,true,nothing))

在真实部分,您可以指定要执行的语句。

于 2013-08-12T12:40:01.250 回答
1

除了已经说过的内容之外,在大多数情况下,If(condition, true_part, false_part) 三元运算符应该(使用 one I)优于IIf(condition, true_part, false_part) 函数(使用 two )。I

If()三元运算符将仅对与条件结果相对应的部分进行短路评估(例如,True仅评估 的条件true_part)。

IIf()函数将始终评估条件和两个部分,因为它只是一个函数调用,并且函数的所有参数都将在调用之前进行评估。

由于开发人员通常希望在 IF 语句中进行短路评估,因此使用If()三元运算符应该是默认选择。它允许您运行检查 的表达式,Nothing如下所示,如果没有延迟评估,它将无法工作:

=If(Fields!Blog.Value IsNot Nothing, Fields!Blog.Value.Name, "Blog is missing")
于 2021-03-06T22:21:20.707 回答
0

你也可以试试这个例子

= IIF(Parameters!expression.Value = True, 'somethingnew', 'somethingelse')

于 2018-11-16T08:01:53.643 回答