有人可以告诉我SSRS中这个公式中缺少的是什么吗?或者更好的是,有人可以用NESTED IIF语法编写同样的东西吗?
Switch(
(Parameters!StartMonth.Value <= 1 And Parameters!EndMonth.Value >= 1),
(Code.CalculateFraction(
(Fields!retail1.Value -Fields!cost1.Value) , Fields!cost1.Value
) *100
),
(Parameters!StartMonth.Value <= 2 And Parameters!EndMonth.Value >= 2),
(Code.CalculateFraction(
(
(Fields!retail1.Value +Fields!retail2.Value)-
(Fields!cost1.Value + Fields!cost2.Value)
) ,
(Fields!cost1.Value + Fields!cost2.Value)
) *100
)
)
这让我发疯了。为简单起见,我在这里进行了2次迭代。我有12个,下一步我必须总结零售1到零售12和成本1直到成本12.
我不能在这两个方面做到这一点。
编辑:
我现在正在尝试这个并且仍然在第一个条件中返回值
=iif(
Parameters!StartMonth.Value <= 1 AND Parameters!EndMonth.Value >= 1,
ReportItems!txtTotal2.Value,
iif(
Parameters!StartMonth.Value <= 2 AND Parameters!EndMonth.Value >= 2,
ReportItems!txtTotal3.Value,
iif(
Parameters!StartMonth.Value <= 3 AND Parameters!EndMonth.Value >= 3,
ReportItems!txtTotal4.Value,
Nothing
)
)
)
编辑2:
说明什么是不正确的。
我的整个逻辑是不正确的,以达到我期待的结果。在我的情况下很明显,无论我使用什么,无论是IIF还是只切换第一个语句都会执行,因为它是真的。
但我不得不改变逻辑以达到我想要的结果。
iif(
Parameters!EndMonth.Value = 1,
ReportItems!txtTotal1.Value,
Parameters!EndMonth.Value = 2,
ReportItems!txtTotal2.Value,
and so on
)
这解决了我的问题。谢谢你们,我很感激。
答案 0 :(得分:1)
乍一看语法看起来是正确的。在SSRS的大多数地方,您需要=
来开始陈述。您上面的代码是指CalculateFraction()
的嵌入代码是否存在且是否在其他地方成功使用?
答案 1 :(得分:1)
尝试使用分离的IIF语句:
=iif(
Parameters!StartMonth.Value <= 1 AND Parameters!EndMonth.Value >= 1,
ReportItems!txtTotal2.Value, Nothing
) OR
iif(
Parameters!StartMonth.Value <= 2 AND Parameters!EndMonth.Value >= 2,
ReportItems!txtTotal3.Value, Nothing
) OR
iif(
Parameters!StartMonth.Value <= 3 AND Parameters!EndMonth.Value >= 3,
ReportItems!txtTotal4.Value, Nothing
)