Как провести линию после каждой группы в службах SQL Server Reporting Services?

Ниже приведен отчет, который я создал. Я хотел бы нарисовать линию после каждой группы, как показано красной линией на изображении.
Пробовал вмешиваться в свойства Textbox > выражение стиля границы. Но это не останется, как только я закрою и снова открою его.
Если я установлю границу для всей группы, строка будет повторяться для каждой строки в группе, которую я не хочу.

помочь?

enter image description here

6 ответов


  1. нажмите на кнопку View вкладка в Построителе отчетов Microsoft SQL Server.
  2. обеспечить Properties флажок установлен так,что отображается окно свойств.
  3. на ProductionCountry выберите всю строку группы. Свойства должны отображаться для строки.
  4. в свойствах копать до Border ->BorderStyle ->Top. Значение, скорее всего, будет пустым.
  5. на 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")