문제

보고서 내 표현에 문제가 있습니다. 내 값에 따라 테이블 내에서 텍스트 상자의 배경을 채색하고 있습니다. 필드의 텍스트는 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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top