0

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

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

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

在此处输入图像描述

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

4

2 回答 2

0

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

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

在此处输入图像描述

以及一个基于此的简单表,其中包含一个基于grp.

在此处输入图像描述

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

=IIf(Fields!value.Value > Min(Fields!limit.Value, "Group1")
  , "Red"
  , Nothing)

这将检查当前行的父组中的所有行,而不仅仅是当前行。这按预期工作:

在此处输入图像描述

在不了解您的数据的情况下,不可能说这是否适用于您的情况,但希望它能给您一些考虑。

评论后编辑

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

这仅可通过 2008R2 及更高版本中的 SSRS 表达式获得,因此这对您的情况没有帮助。

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

有一些解决方法建议使用自定义代码来执行此操作,例如这篇文章,但我从未使用过这个建议的解决方案,并且只有在您对报告数据集没有任何控制权时才会考虑它。

于 2013-09-05T15:17:19.370 回答
0

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

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

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

于 2013-09-05T15:03:11.107 回答