Граница SSRS на вложенной группе строк

Я создаю отчет 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")

Я попытался изменить области действия предыдущего и первого, но это не сработало.

Ошибка, которую я получаю: «Выражение BorderColor для текстового поля «Field» имеет параметр области, который недействителен для агрегатной функции»


person lilGrim    schedule 05.03.2014    source источник


Ответы (1)


У меня была точно такая же проблема сегодня (ну с Tablix, не матрицей, а в SSRS 2008 R2). Я не мог заставить функцию Previous() работать правильно и не выдавать ту же ошибку «Выражение 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.

Надеюсь это поможет!

person Lucas    schedule 26.03.2014