SSRS 발현 평가 문제
-
11-07-2019 - |
문제
보고서 내 표현에 문제가 있습니다. 내 값에 따라 테이블 내에서 텍스트 상자의 배경을 채색하고 있습니다. 필드의 텍스트는 SQL 서버의 백업과 관련이 있습니다. 값은 날짜 또는 "아직 취하지 않은"텍스트입니다. 날짜가 2 일 이상이면 배경이 노란색이되기를 원합니다. 일주일 이상이거나 날짜 값이 "아직 가져 가지"경우 배경이 빨간색이되기를 원합니다. 그렇지 않으면 녹색입니다.
SSRS (몇 주 전)에 대한 보고서로 시작한 이후로 제가 겪었던 문제는 내 표현이 완전히 평가되는 것 같습니다. IF 진술은 그 중 하나만 사용 되더라도 True and False 값을 모두 평가합니다.
"아직 취해지지 않은"것은 날짜가 아니며 날짜 문자열을 날짜로 변환 해야하는 날짜와 함께 일하기 때문에 이것은 문제가됩니다. 다음은 현재 가지고있는 코드입니다.
=IIF(Fields!LastBackUpTaken.Value = "Not Yet Taken","Red", IIF( IsDate(Fields!LastBackUpTaken.Value) = true,
IIF( CDate(Fields!LastBackUpTaken.Value).AddDays(Parameters!DaysTillExpiry.Value).CompareTo(NOW()) = 1,
"GreenYellow",
IIF( CDate(Fields!LastBackUpTaken.Value).AddDays(7).CompareTo(NOW()) = 1, "Yellow", "Red")),
"Red"))
기본적으로 표현식은 "LastBackUptaken.Value ="아직 가져 가지 "이면,"아직 가져 가지 않았다 "는 경우"아직 찍지 않은 경우 "문자열이 날짜인지 확인하십시오. 날짜, 빨간색을 반환하십시오. 날짜 인 경우 계산을하고 적절한 색상을 반환하십시오.
이 표현식은 "아직 찍지 않은"모든 텍스트 필드에 대해 텍스트로 작동합니다. 텍스트에 색상 세트가 없으므로 "아직 가져 가지"않은 필드의 경우.
편집 : 텍스트가 "아직 취하지 않은"때마다 언급하는 것을 잊어 버린 변환 오류도 얻습니다.
어떤 아이디어?
해결책
보고서 속성의 코드 탭에서 색상 문자열을 반환하려면 VB 함수를 작성하십시오. 여기에서 편안한 언어 구조물을 사용할 수 있습니다 (사례 진술, 정기 IF 문 등). 논리를 읽기 쉬운 논리.
Public Function GetBackgroundColor(ByVal DateString as String) As String
'plain old vb syntax here
End Function
배경색 속성 표현에서 :
=Code.GetBackgroundColor(Fields!LastBackUpTaken.Value)