= 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”是十进制。
答案 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语句包装在转换中。如果只是演示问题,请将其包装在格式化函数中。