切换语句 - 比较零值

时间:2015-06-03 13:51:10

标签: reporting-services

我目前有两个文本框。一种是显示名为principal的列中的第一个值。第二个文本框是显示文本,如果值等于零,则显示“主体为零”,否则显示“主体值不为零”。 X是本金额。

使用

填充第一个文本框
=First(Fields!Principal.Value, "PaymentInfoDTO")

第二个文本框使用

生成#Error
=Switch(First(Fields!Principal.Value, "PaymentInfoDTO") = 0, "The Principal is zero", "The Principal is not zero") 

First(Fields!Principal.Value,“PaymentInfoDTO”)产生100000。

请问如何修复我的switch语句,使其停止显示#Erorr

2 个答案:

答案 0 :(得分:3)

那里没有switch语句。鉴于表达式的结构,它最适合作为IIF()

= IIF(要评估的条件,如果为真,则结果,如果为假则结果)

=IIF(First(Fields!Principal.Value, "PaymentInfoDTO") = 0, "The Principal is zero", "The Principal is not zero")

另一方面,switch语句只返回每个条件检查的一个结果。

=开关(条件,结果如果为真,条件2,结果如果2为真)

您可以通过执行此操作重新格式化表达式以使用切换。

=Switch(First(Fields!Principal.Value, "PaymentInfoDTO") = 0, "The Principal is zero", 
First(Fields!Principal.Value, "PaymentInfoDTO") <> 0, "The Principal is not zero")

当您有多个要单独评估的值时,通常最好使用切换语句。对于简单的布尔返回并不是最好的,例如检查某些东西是否等于0。

答案 1 :(得分:1)

您使用的语法对于IIF运算符是正确的。由于您只进行了一次比较,因此使用它,它应该可以工作。

编辑:在回复您的评论时,如果您希望表达式的错误部分显示实际值,您将执行以下操作:

=IIF(First(Fields!Principal.Value, "PaymentInfoDTO") = 0, "The Principal is zero", "The Principal is "+ CStr(First(Fields!Principal.Value, "PaymentInfoDTO")))

然而,您可以完全摆脱IIF语句并制作表达式:

"The Principal is "+ CStr(First(Fields!Principal.Value, "PaymentInfoDTO"))

并始终显示PaymentInfoDTO的值。