如果声明未在SSRS的第二部分计算中正确返回

时间:2017-03-21 13:11:44

标签: reporting-services ssrs-2012

  

= iif(Fields!type.Value =“Kilo”,CDec(Fields!Pack.Value * Fields!Qty.Value * Fields!UnitPrice.Value),CDec(Fields!Qty.Value * Fields!UnitPrice.Value ))

我试图通过在SSRS中使用If语句来计算出该值。 在if if case语句中,第一部分计算正确。然而,最后一部分是#Error。任何人都可以在这里弄清楚哪些不正确吗?

PS。“Pack”的数据类型是字符串,其余的“Qty”是int,“UnitPrice”是十进制。

2 个答案:

答案 0 :(得分:0)

你的表达似乎很好,因为真假陈述之间没有重大区别。

建议: - 由于" Pack"的数据类型是字符串..我们需要在CDec(Fields!Pack.Value)

之前转换为十进制
=iif(Fields!type.Value="Kilo",
 CDec(CDec(Fields!Pack.Value) * Fields!Qty.Value * Fields!UnitPrice.Value)
 ,CDec(Fields!Qty.Value * Fields!UnitPrice.Value))

答案 1 :(得分:0)

在数学运算之前将Pack字段转换为十进制,并从其余部分中删除十进制转换。这应该返回两个输出路径的十进制值。可能不需要额外的转换。

=iif(Fields!type.Value="Kilo",
(CDecFields!Pack.Value) * Fields!Qty.Value * Fields!UnitPrice.Value,
Fields!Qty.Value * Fields!UnitPrice.Value)

但是,如果您确实需要在之后将其转换为十进制,请将整个iif语句包装在转换中。如果只是演示问题,请将其包装在格式化函数中。