0

我正在使用Switch并且表达式似乎没有明显的ELSE部分,所以我最终得到了以下内容,但感觉有点像黑客 - 是吗?

它的工作原理 - 如果它是foo或者bar但任何其他产品字符串被单独留下,它会修改字符串:

=Switch(Fields!Product.Value = "foo" , "foo (incl sad)", 
       Fields!Product.Value = "bar", "bar (incl sick)",
       Cdbl(1)=Cdbl(1), Fields!Product.Value)
4

3 回答 3

2

如果它有效,它就有效。您也可以使用 IIF(Fields!Product.Value = "foo", "foo2", IIF(Fields!Product.Value = "bar", "bar2", Fields!Product.Value)

于 2012-10-15T16:07:08.707 回答
0

由于有人要求:

=Switch(Fields!Product.Value = "foo" , "foo (incl sad)",  
        Fields!Product.Value = "bar", "bar (incl sick)", 
        Cdbl(1)=Cdbl(1), Fields!Product.Value) 

会成为

=Switch(Fields!Product.Value = "foo" , "foo (incl sad)",  
        Fields!Product.Value = "bar", "bar (incl sick)", 
        true, Fields!Product.Value) 

我认为哪个更具可读性 - 我可以理解1 = 1,但任何人都可以告诉我在原始代码中转换为双精度数的目的是什么?

据我所知,这是从 switch 语句返回“else”的唯一方法。否则返回 null/Nothing(分别针对 c#/VB 大师)。

于 2012-10-16T08:16:48.930 回答
0

您可以使用交换机,您可以做的另一件事是使用=IIF(...)MSDN:

Iif 函数根据表达式是否为真返回两个值之一。如果 LineTotal 的值超过 100,则以下表达式使用 Iif 函数返回布尔值 True。否则返回 False:

另一个表达式可以包含另一个IIF,因此您不限于单个IIF. 所有 RS 表达式都可以在这里找到:

http://msdn.microsoft.com/en-us/library/ms157328.aspx

于 2012-10-15T15:45:55.933 回答