Reporting services 在SSRS中,如何将父报表项的值与子组中的报表项进行比较?

Reporting services 在SSRS中,如何将父报表项的值与子组中的报表项进行比较?,reporting-services,ssrs-2008,reportingservices-2005,report-builder2.0,Reporting Services,Ssrs 2008,Reportingservices 2005,Report Builder2.0,我正在使用SSRS 2008。在我的报告详细信息上方,我有3个不同的组,它们是计算的总和。如果子组中的任何发票金额(A)高于限额(B),我尝试将限额涂成红色 我目前正在使用这个表达式,但它只查看第一个或最后一个发票金额。限额报告项位于发票组正上方的父组中 =IIF(ReportItems!Invoice_DueDate.Value>ReportItems!Limit.Value,"Red","Black") 我的解决方案:我决定使用SQL获取按到期日分组的发票金额总和。然后我调用了父组

我正在使用SSRS 2008。在我的报告详细信息上方,我有3个不同的组,它们是计算的总和。如果子组中的任何发票金额(A)高于限额(B),我尝试将限额涂成红色

我目前正在使用这个表达式,但它只查看第一个或最后一个发票金额。限额报告项位于发票组正上方的父组中

=IIF(ReportItems!Invoice_DueDate.Value>ReportItems!Limit.Value,"Red","Black")


我的解决方案:我决定使用SQL获取按到期日分组的发票金额总和。然后我调用了父组中的该字段。

如果我正确理解了您的问题,那么我认为您可以使用

=IIF(MAX(ReportItems!Invoice_DueDate.Value) > ReportItems!Limit.Value,"Red","Black")

您需要某种聚合函数,例如
MAX()
,来告诉SSRS应该做什么的范围和操作。(例如,如果要确保总数不超过限制,可以使用
SUM(…)

可以使用指定父组范围的聚合表达式从子组引用父组

例如,假设我们有一些简单的数据:

一个基于此的简单表,一个基于
grp
的组

此处,详细信息行中的
文本框的BackgroundColor属性设置为:

=IIf(Fields!value.Value > Min(Fields!limit.Value, "Group1")
  , "Red"
  , Nothing)
这将检查当前行的父组中的所有行,而不仅仅是当前行。这将按预期工作:

不知道你的数据,不可能说出这是否适用于你的情况,但希望它能给你一些考虑。 评论后编辑

好的,根据进一步的评论,您似乎需要聚合功能上的聚合

这仅在2008R2及以上版本中通过SSRS表达式提供,因此这对您的情况没有帮助

对于旧版本,最好的选择可能是向数据集中添加一个额外字段,为每个组提供最大的
Invoice
值,然后您可以在父组中使用此值而不会出现问题


有一些解决方案,建议使用自定义代码来执行此操作,例如,但我从未使用过这个建议的解决方案,如果您对报表数据集没有任何控制,它甚至只会考虑它。< / P>数据是十进制格式(1200000),但报表项的格式为显示美元金额。下面是我尝试的表达式:=IIF(MAX(ReportItems!Invoice_DueDate.Value,“table1_DueDate”)>ReportItems!Limit.Value,“Red”,“Black”)。我尝试了此解决方案,但出现以下错误:[rsAggregateReportItemInBody]textrun“限制”的颜色表达式。段落[0]。TextRuns[0]'对报表项使用聚合函数。聚合函数只能对包含在页眉和页脚中的报表项使用。在我的屏幕截图中,组的设置与您的设置有很大不同。感谢您的帮助。在我的示例中,我使用的是

字段!…
引用,而不是
报表项!…
,这就是原因所在您可以在属性表达式中使用它。如果您提供一些示例数据来演示您的需求,我可以提供一些进一步的详细信息。我希望获得要在父组中使用的子组的最大值。您的解决方案是获得要在子组中使用的父组聚合。我使用的是
=IIF(max(Fields!Invoice.value),“table1\u DueDate”)>SUM(Fields!Limit.Value)、“Red”、“Black”)
,但我似乎无法在我的子组中找到聚合函数。
table1\u DueDate
是子组或(A)。我收到以下错误:范围参数必须设置为字符串常量,该常量等于包含组的名称、包含数据区域的名称或数据集的名称。好的,我添加了一些详细信息。我尝试了此解决方案,但收到了错误。表达式:=IIF(MAX(ReportItems!Invoice_DueDate.Value)>ReportItems!Limit.Value,“红色”、“黑色”)错误:[rsAggregateReportItemInBody]textrun限制的颜色表达式。段落[0]。TextRuns[0]'对报表项使用聚合函数。聚合函数只能用于页眉和页脚中包含的报表项。我决定使用SQL获取按到期日分组的发票金额的总和。然后,我在父组中调用了该字段。