我正在制作 SSRS2012 报告。
我有一个带有静态列和嵌套行组的矩阵。我想基于父组在我的行上添加顶部和底部边框。矩阵如下所示:
[ProcessCell] | [Name] | [Field]|
我的群组是:ProcessCell1 (parent) - Name (child)
我目前正在使用标准格式来获取[ProcessCell]
的边框并且它有效。我在[Name]
的边框上使用了一个表达式(在另一篇文章中找到)并且它有效,但该表达式对[Field]
框不起作用。表达式如下:
=IIf(Fields!ProcessCell.Value = Previous(Fields!ProcessCell.Value, "Name") OR Not(Fields!ProcessCell.Value = First(Fields!ProcessCell.Value, "Name")), "Light Gray", "Black")
我尝试更改之前和之前的范围,但它没有用。
我得到的错误是“文本框'Field
'的BorderColor表达式有一个对聚合函数无效的范围参数”
答案 0 :(得分:1)
我今天遇到了完全相同的问题(使用Tablix
,而不是矩阵,以及SSRS 2008 R2)。我无法使Previous()
函数正常工作而不会为文本框抛出相同的#34; BorderStyle表达式..."你看到的错误。
我所做的是在我的数据集中添加一个新字段,该字段使用ROW_NUMBER()
分析SQL函数对结果进行分类。我的报告中的相关字段是UserName,ReportName和DatetimeRun(是的,这是关于报告使用情况的报告)。我希望在UserName和ReportName的每个唯一组合之间出现边框,因此我将此字段添加到我的数据集中:
ROW_NUMBER() over (partition by UserName,ReportName order by UserName,ReportName)
as RowNum
对于UserName和ReportName的每个唯一组合(Partition by
部分中的字段),从1开始,并按顺序对返回的行进行编号。
回到我的BorderStyle / Top表达式,而不是使用Previous()
我使用了这个:
=iif(Fields!RowNum.Value = 1,"Solid","None")
仅在新UserName / ReportName组合的开头显示边框。
希望这有帮助!