我非常坚持试图让表达式来处理SSRS报告。 好了解决这个问题我从业务对象的起源重新创建了这个报告,这包含了很多变量。
我的报告中有3列基于这些变量,所以创建了以下内容并且看起来工作正常。
=sum(Fields!No_of_cash_raised.Value)
=sum(Fields!No_of_cash_raised.Value) \ CountDistinct(Fields!TCY_REFNO.Value)
=sum(IIF((Fields!ARA_CODE.Value = "CASH" or Fields!ARA_CODE.Value = "PYMT") AND Fields!TCY_START_DATE.Value >= DateAdd("d",-28,Parameters!P_TCY_START_DATE_TO.Value),1,0))
现在这是我遇到下一个表达式问题的地方。我试图根据2个日期之间的计算来计算参考编号。
=count(Fields!TCY_REFNO.Value, IIF(Fields!TCY_START_DATE.Value >= DateAdd("d",-28,Parameters!P_TCY_START_DATE_TO.Value),1,0))
当我尝试运行此报告时,我得到" scope参数对聚合函数无效"我已经调查了这个错误,但无法找到解决方案。除了上一个表达式中列出的参数字段之外,我可以说所有引用的字段都可以在我的数据集中使用。我使用的是Tablix,我在一个列上进行分组,上面没有引用。
提前致谢
答案 0 :(得分:0)
查看Sum函数的MSDN reference,您正在使用格式
总和(表达式,范围)
scope
(String)可选。包含要应用聚合函数的报表项的数据集,组或数据区域的名称。如果未指定范围,则使用当前范围。
您似乎将此范围的值设置为iif
语句,该语句返回1或0,而不是数据集(例如“DataSet1”)。无法使用iif
(聚合函数)作为求和表达式的范围。
<强>更新强>
查看计数功能的MSDN reference,您使用的格式为
计数(表达式,范围)
scope
(字符串)包含要应用聚合函数的报表项的数据集,组或数据区域的名称。如果未指定范围,则使用当前范围。
您仍然似乎将此范围的值设置为iif
语句,该语句返回1或0,而不是数据集(例如“DataSet1”) 。您无法使用iif
(聚合函数)作为计数表达式的范围。
<强>解强>
您需要执行Sum
和iif
才能获得所需的行为。
=Sum(
IIF(Fields!TCY_START_DATE.Value >=
DateAdd("d",-28,Parameters!P_TCY_START_DATE_TO.Value)
, 1
, 0)
这样,如果TCY_START_DATE
大于P_TCY_START_DATE_TO - 28
天