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

#reporting-services #border #presentation

#службы отчетов #граница #презентация

Вопрос:

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

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

введите описание изображения здесь

Комментарии:

1. Если ваше условное форматирование не застревает при запуске отчета, попробуйте проверить это сообщение: joellipman.com/articles/microsoft/reporting-services /…

Ответ №1:

  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, установите border равным solid.

Комментарии:

1. Потрясающее использование выражений! Мне нужна была видимость линии между экземплярами группы, но не на последнем, поэтому я использовал ваше выражение и просто посмотрел, чтобы убедиться, что оно не было последним.

Ответ №2:

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

Ответ №3:

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

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

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

Ответ №4:

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

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

Комментарии:

1. Лучший ответ, если вы не хотите использовать выражения.

Ответ №5:

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

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

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

Ответ №6:

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

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

Также в цвете границы используется это выражение

 =iif(Fields!Group_Name.Value="Hard Corded(first value)",,"Black","LightGrey")