Как провести линию после каждой группы в службах SQL Server Reporting Services?
Ниже приведен отчет, который я создал. Я хотел бы нарисовать линию после каждой группы, как показано красной линией на изображении.
Пробовал вмешиваться в свойства Textbox > выражение стиля границы. Но это не останется, как только я закрою и снова открою его.
Если я установлю границу для всей группы, строка будет повторяться для каждой строки в группе, которую я не хочу.
помочь?
6 ответов
- нажмите на кнопку
View
вкладка в Построителе отчетов Microsoft SQL Server. - обеспечить
Properties
флажок установлен так,что отображается окно свойств. - на
ProductionCountry
выберите всю строку группы. Свойства должны отображаться для строки. - в свойствах копать до
Border
->BorderStyle
->Top
. Значение, скорее всего, будет пустым. - на
Top
поле, Введите выражение ниже для верхнего граница.
значение верхнего поля:
=IIF(Fields!ProductionCountry.Value = Previous(Fields!ProductionCountry.Value) OR Fields!ProductionCountry.Value = First(Fields!ProductionCountry.Value, "mydataset"),"None","Solid")
изменить mydataset
значение выше, чтобы соответствовать имени набора данных вашего отчета.
Примечание:
если текущая строка принадлежит к той же группе, что и предыдущая строка или текущая строка группы является первой из набора данных, установите border в none, set граница с твердым телом.
выберите всю строку сведений и добавьте это выражение в свойство BorderStyle-Top:
=IIF((Previous(Fields!ProductionCountry.Value) <> Fields!ProductionCountry.Value)
OR (Previous(Fields!IndustryName.Value) <> Fields!IndustryName.Value)
OR (Previous(Fields!ProductGroup.Value) <> Fields!ProductGroup.Value),
"Solid",
"None")
чтобы улучшить ответ @niktrs, я бы предложил:
=Iif(Fields!ProductionCountry.Value = Previous(Fields!ProductionCountry.Value) OR IsNothing(Previous(Fields!ProductionCountry.Value)),"None","Solid")
это имеет то преимущество, что не добавляет строку в исходную строку группы, даже если первая отображаемая группа не является первой группой в наборе данных, например, где выполняется сортировка или фильтрация.
то, что я нашел очень легко сделать, это определить верхнюю границу для группы. Таким образом, каждая новая группа добавляет границу между последней строкой предыдущей группы и первой строкой новой группы. Он также добавляет границу после заголовков.
Это решение не рисует границу в конце последней строки. Если вам тоже нужна эта граница, вы можете определить нижнюю границу для табликса, содержащего группы.
=Iif(Fields!ProductionCountry.Value ="","None","Solid")
также измените границу по умолчанию none Left solid right solid bottom none top приведенное выше выражение. и к свойствам прямоугольника изменить порядок bootom..
Я пробовал это для верхней границы, и он работал нормально...
в моем случае у меня есть агрегированное значение, поэтому я не могу использовать предыдущую функцию, поэтому я жестко закодировал первое значение из группы, которую я знал, что это будет первое значение в этой группе.Потом в Стиль Границы я использовал это выражение
Top =iif(Fields!Group_Name.Value="Hard Corded(first value)","Solid","None")
также в цвете границы используется это выражение
=iif(Fields!Group_Name.Value="Hard Corded(first value)",,"Black","LightGrey")