Reporting services 如何在ssrs矩阵报告中获取行中的最大列值

Reporting services 如何在ssrs矩阵报告中获取行中的最大列值,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,我创建了一个SSRS报告,它以列名显示小时,以行名显示日期。单元格值表示特定日期特定小时的销售额 我的报告中的表格如下: 日期|小时1 |小时2 |小时3 |最大销售额|最小销售额 2015年10月4日| 5 | 10 | 15 | 15 | 5 2015年11月4日| 30 | 10 | 20 | 30 | 10 我想要最大销售额的单元格中的绿色背景,最小销售额的单元格中的红色背景。所需输出如下: 日期|小时1 |小时2 |小时3 |最大销售额|最小销售额 2015年10月4日| 5(红色)|

我创建了一个SSRS报告,它以列名显示小时,以行名显示日期。单元格值表示特定日期特定小时的销售额

我的报告中的表格如下:

日期|小时1 |小时2 |小时3 |最大销售额|最小销售额 2015年10月4日| 5 | 10 | 15 | 15 | 5 2015年11月4日| 30 | 10 | 20 | 30 | 10

我想要最大销售额的单元格中的绿色背景,最小销售额的单元格中的红色背景。所需输出如下:

日期|小时1 |小时2 |小时3 |最大销售额|最小销售额 2015年10月4日| 5(红色)| 10 | 15(绿色)| 15 | 5 2015年11月4日| 30(绿色)| 10(红色)| 20 | 30 | 10

我为GetColor编写了一个自定义代码,如下所示:

函数GetCellColor(ByVal minValue为整数,ByVal maxValue为整数,ByVal currentValue为整数)为字符串
如果currentValue=maxValue,则
返回“绿色”
否则,如果currentValue=minValue,则
返回“红色”
其他的
返回“白烟”
如果结束

结束函数
您应该能够以您正在执行的方式完成此操作,但您需要使用与填充代码调用中的MinMax列相同的字段或表达式。如果您使用表达式来计算它,您将使用相同的公式

=Code.GetCellColor(Fields!Max_Sales.value, Fields!Min_Sales.value, Fields!YourField.value)
正如Koryu提到的,您可以通过将逻辑放入背景色属性的表达式中来实现这一点,而无需使用代码:

=IIf(Fields!YourField.value = Fields!Max_Sales.value, "Green",
 IIf(Fields!YourField.value = Fields!Min_Sales.value, "Red", 
  "WhiteSmoke"))

我可以回答以下问题。但由于我的名声不到50岁,我没有权利回答。这令人沮丧。我能做些什么来回答问题?您可以通过以下方式更改文本字段的颜色:右键单击文本字段。在关联菜单中,单击
文本字段属性
。然后转到“填充”或“背景”。单击“Fx”按钮。在那里你可以为你的背景色添加一个公式。要访问自定义函数,请使用
=code.GetCellColor()
要访问数据集,请使用
字段!currentValue.Value
。顺便说一句,你也可以通过使用IIF函数而不是vb脚本来解决这个问题。你应该能够回答问题,但不能发表评论。您是在问题下方还是在您的答案部分单击?当单元格要着色时,我想从一行的列值计算最大、最小销售额,并传递给函数GetCellColor@KoryuI。我没有尝试使用您的答案部分。刚才我已经回答了这个问题。感谢@Hannover FistI可以使用数据集中的查询计算最大销售额和最小销售额,并遵循上述方法。但是我想从矩阵的列值计算max_sales和min_sales值。并将计算出的最大、最小值传递给函数GetCelColor(最大、最小、当前)@Hannover Fist