#reporting-services #border #presentation
#службы отчетов #граница #презентация
Вопрос:
Ниже приведен отчет, который я создал. Я хотел бы нарисовать линию после каждой группы, как показано красной линией на изображении.
Пробовал вмешиваться в свойства текстового поля> Выражение стиля границы. Но это не останется, как только я закрою и снова открою его.
Если я установлю границу для всей группы, строка будет повторяться для каждой строки в группе, которая мне не нужна.
Любая помощь?
Комментарии:
1. Если ваше условное форматирование не застревает при запуске отчета, попробуйте проверить это сообщение: joellipman.com/articles/microsoft/reporting-services /…
Ответ №1:
- Перейдите на
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, установите 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")