Как нарисовать линию после каждой группы в службах отчетов SQL Server? - PullRequest
19 голосов
/ 30 сентября 2011

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

Любая помощь?

enter image description here

Ответы [ 6 ]

32 голосов
/ 30 сентября 2011
  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 выше, чтобы оно соответствовало имени набора данных вашего отчета.

Примечание:

Если текущая строкапринадлежит к той же группе, что и предыдущая строка, ИЛИ текущая строка группы является первой из набора данных, установите для параметра none значение, установите для параметра solid значение.

4 голосов
/ 30 сентября 2011

Выберите всю строку сведений и добавьте это выражение в свойство 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")
1 голос
/ 16 апреля 2014

Что мне показалось действительно простым, это определить верхнюю границу для группы.Таким образом, каждая новая группа добавляет границу между последней строкой предыдущей группы и первой строкой новой группы.Он также добавляет границу после заголовков.

Это решение не рисует границу в конце последней строки.Если вам также нужна эта граница, вы можете определить нижнюю границу для таблицы, содержащей группы.

1 голос
/ 08 мая 2013

Чтобы улучшить ответ @ niktrs, я бы предложил:

=Iif(Fields!ProductionCountry.Value = Previous(Fields!ProductionCountry.Value) OR IsNothing(Previous(Fields!ProductionCountry.Value)),"None","Solid")

Преимущество этого состоит в том, что вы не добавляете строку в исходную строку группы, даже если первая отображаемая группа не является первой группой в наборе данных, например, где есть сортировка или фильтрация.

0 голосов
/ 18 марта 2016

В моем случае у меня есть статистическое значение, поэтому я не могу использовать предыдущую функцию, поэтому я жестко закодировал первое значение из группы, которая, как я знал, будет первым значением в этой группе. Затем в Стиль границы Я использовал это выражение

Top =iif(Fields!Group_Name.Value="Hard Corded(first value)","Solid","None")

Также в Border Color использовано это выражение

=iif(Fields!Group_Name.Value="Hard Corded(first value)",,"Black","LightGrey")
0 голосов
/ 24 сентября 2014
=Iif(Fields!ProductionCountry.Value ="","None","Solid")

также измените границу по умолчанию нет слева сплошная правая сплошная нижняя ни одна сверху вышеуказанного выражения и в свойствах прямоугольника измените порядок загрузки.

Я пытался так для верхней границы, и он работал нормально ...

...