SQL Server Reporting Services 보고서에서 대체 행을 어떻게 음영 처리합니까?
편집 : 아래에 나열된 좋은 답변 무리가있다 -에서 신속 하고 간단한 에 복잡하고 포괄적 인가 . 아아, 하나만 선택할 수 있습니다 …
답변
테이블 행의 BackgroundColor 속성으로 이동하여 “Expression …”을 선택하십시오.
이 표현을 사용하십시오 :
= IIf(RowNumber(Nothing) Mod 2 = 0, "Silver", "Transparent")
이 트릭은 보고서의 여러 영역에 적용 할 수 있습니다.
그리고 .NET 3.5 이상에서는 다음을 사용할 수 있습니다.
= If(RowNumber(Nothing) Mod 2 = 0, "Silver", "Transparent")
담당자를 찾지 않음-나는이 질문을 직접 조사하고 공유 할 것이라고 생각했습니다.
답변
IIF (RowNumber …)를 사용하면 행을 그룹화 할 때 일부 문제가 발생할 수 있으며 다른 대안은 간단한 VBScript 함수를 사용하여 색상을 결정하는 것입니다.
조금 더 노력하지만 기본 솔루션으로는 충분하지 않으면 좋은 대안입니다.
기본적으로 다음과 같이 코드를 보고서에 추가합니다.
Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
ByVal EvenColor As String, ByVal Toggle As Boolean) As String
If Toggle Then bOddRow = Not bOddRow
If bOddRow Then
Return OddColor
Else
Return EvenColor
End If
End Function
그런 다음 각 셀에서 다음과 같이 BackgroundColor를 설정하십시오.
=Code.AlternateColor("AliceBlue", "White", True)
자세한 내용은이 Wrox 기사에 있습니다.
답변
Catch22의 솔루션을 사용할 때 체스 효과가 나타났습니다. 매트릭스에는 디자인에 둘 이상의 열이 있기 때문입니다. 그 표현은 나를 위해 잘 작동했습니다 :
=iif(RunningValue(Fields![rowgroupfield].Value.ToString,CountDistinct,Nothing) Mod 2,"Gainsboro", "White")
답변
@ Catch22의 솔루션을 변경했습니다. 색상 중 하나를 변경하기로 결정하면 각 필드에 들어가야한다는 생각이 마음에 들지 않습니다. 색상 변수를 변경해야하는 수많은 필드가있는 보고서에서 특히 중요합니다.
'*************************************************************************
' -- Display alternate color banding (defined below) in detail rows
' -- Call from BackgroundColor property of all detail row textboxes
'*************************************************************************
Function AlternateColor(Byval rowNumber as integer) As String
Dim OddColor As String = "Green"
Dim EvenColor As String = "White"
If rowNumber mod 2 = 0 then
Return EvenColor
Else
Return OddColor
End If
End Function
색상을 수락하는 기능에서 사용할 색상이 포함 된 기능으로 변경했습니다.
그런 다음 각 필드에 다음을 추가하십시오.
=Code.AlternateColor(rownumber(nothing))
이는 각 필드의 배경색에서 색상을 수동으로 변경하는 것보다 훨씬 강력합니다.
답변
내가 주목 한 한 가지는 상위 두 가지 방법 중 어느 것도 그룹에서 첫 번째 행의 색을 나타내는 개념이 없다는 것입니다. 그룹은 이전 그룹의 마지막 줄과 반대 색상으로 시작합니다. 나는 그룹이 항상 같은 색으로 시작하기를 원했습니다 … 각 그룹의 첫 번째 행은 항상 흰색이어야하고 다음 행은 색이 지정되어야합니다.
기본 개념은 각 그룹이 시작될 때 토글을 재설정하는 것이므로 약간의 코드를 추가했습니다.
Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
ByVal EvenColor As String, ByVal Toggle As Boolean) As String
If Toggle Then bOddRow = Not bOddRow
If bOddRow Then
Return OddColor
Else
Return EvenColor
End If
End Function
'
Function RestartColor(ByVal OddColor As String) As String
bOddRow = True
Return OddColor
End Function
이제 세 가지 종류의 셀 배경이 있습니다.
- 데이터 행의 첫 번째 열에는 = Code.AlternateColor ( “AliceBlue”, “White”, True)가 있습니다 (이전 답변과 동일합니다).
- 데이터 행의 나머지 열은 = Code.AlternateColor ( “AliceBlue”, “White”, False)입니다 (이것은 또한 이전 답변과 동일합니다).
- 그룹화 행의 첫 번째 열은 = Code.RestartColor ( “AliceBlue”)입니다 (이것은 새로운 기능입니다).
- 그룹화 행의 나머지 열에는 = Code.AlternateColor ( “AliceBlue”, “White”, False)가 있습니다 (이전에 사용되었지만 행 그룹화에 대해서는 언급되지 않았습니다).
이것은 나를 위해 작동합니다. 그룹화 행을 비색 또는 다른 색으로 만들려면이 방법을 사용하여 변경하는 방법이 분명해야합니다.
이 코드를 개선하기 위해 수행 할 수있는 작업에 대한 의견을 자유롭게 추가하십시오. SSRS와 VB를 처음 접하는 사람이므로 개선 할 여지가 충분하다고 생각하지만 기본 아이디어는 건전 해 보입니다 (유용했습니다). 나를 위해) 그래서 나는 여기서 버리고 싶었다.
답변
그룹 머리글 / 바닥 글의 경우 :
=iif(RunningValue(*group on field*,CountDistinct,"*parent group name*") Mod 2,"White","AliceBlue")
이것을 사용하여 각 그룹 내에서 행 색상 수를 “재설정”할 수도 있습니다. 각 하위 그룹의 첫 번째 세부 행이 White로 시작하기를 원했고이 솔루션 (세부 행에서 사용되는 경우)이 가능해졌습니다.
=IIF(RunningValue(Fields![Name].Value, CountDistinct, "NameOfPartnetGroup") Mod 2, "White", "Wheat")
참조 : http://msdn.microsoft.com/en-us/library/ms159136(v=sql.100).aspx
답변
Michael Haren의 솔루션이 저에게 잘 작동합니다. 그러나 미리보기 할 때 “투명”이 유효한 BackgroundColor가 아니라는 경고가 나타납니다. SSRS에서 보고서 요소의 배경색 설정 에서 빠른 수정 사항을 찾았습니다
. “투명”대신에 아무것도 사용하지 마십시오
= IIf(RowNumber(Nothing) Mod 2 = 0, "Silver", Nothing)