2017-11-16 13 views
0

보고서 작성기 3에서 배경색 서식을 지정하고 있지만이 표현식에 어려움이 있습니다. 보고서가 실행 되기에는 너무 복잡합니까? 아니면 뭔가 빠져 있습니까?보고서 작성기에서 중첩 IIF/SWITCH : 오류 BC30201 표현식이 예상 됨

가짜 코드 - 기호가 Null (참)이면 배경색이 흰색이고, 그렇지 않으면 Coursecode가 영문 (숫자) L1이면 형식 등급 (스위치 1) 그 밖의 다른 형식 등급 (스위치 2)입니다.

=IIF(IsNothing(Fields!Marks.Value), 
    "White", 
    IIF(Fields!CourseCode.Value = '50089109', 
     SWITCH(
      Fields!Marks.Value > 57, "YellowGreen", 
      Fields!Marks.Value >= 48 AND Fields!Marks.Value <= 57 , "Orange", 
      Fields!Marks.Value < 48, "Firebrick" 
     ) 
     , 
     SWITCH(
      Fields!Marks.Value > 61, "YellowGreen", 
      Fields!Marks.Value >= 52 AND Fields!Marks.Value <= 61 , "Orange", 
      Fields!Marks.Value < 52, "Firebrick" 
     ) 
    ) 
) 

같은 문제에 대한 내 다른 접근이었다 - 코스 코드에 해당하는 경우 그에 따라 서식을 적용, 평가하여 시작 :

=IIF(Fields!CourseCode.Value = '50089109', 
    IIF(IsNothing(Fields!Marks.Value), "White", 
    SWITCH(
     Fields!Marks.Value > 57, "YellowGreen", 
     Fields!Marks.Value >= 48 AND Fields!Marks.Value <= 57 , "Orange", 
     Fields!Marks.Value < 48, "Firebrick" 
     ) 
    ), 
    IIF(IsNothing(Fields!Marks.Value), "White", 
    SWITCH(
     Fields!Marks.Value > 61, "YellowGreen", 
     Fields!Marks.Value >= 52 AND Fields!Marks.Value <= 61 , "Orange", 
     Fields!Marks.Value < 52, "Firebrick" 
     ) 
    ) 
) 
+0

당신이 점점 오류 또는 당신은 잘못된 배경 색상을 얻고있다? BTW : "White"대신 "Nothing"을 사용합니다. 배경색이 설정되어 있지 않으면 기본값입니다. –

+0

'오류 BC30201 표현식이 예상 됨 '- BG 색상에 대한 좋은 팁 - thansk! –

+1

'50089109'주변에 작은 따옴표를 사용하고 있습니다. 허용되지 않습니다. 큰 따옴표를 사용하면 제대로 작동합니다. SSRS 표현식의 작은 따옴표는 주석을 나타냅니다. –

답변

1

정말 훨씬 잘못 볼 수 없습니다 귀하의 표현 그래서 일부 값이 갇혀되지 않을 수도 있습니다. 테스트 목적을 위해 첫 번째 조건이 충족되는지 확인할 수 있도록 흰색 이외의 배경색을 설정합니다. SWITCH 문을 약간 정리할 수도 있습니다.

그래서, 테스트 목적으로 내가 잘못된 부분에 다음과 같은 표현

테스트 버전 LimeGreen 될 IIF의 진정한 부분에 의해 갇혀

=IIF(IsNothing(Fields!Marks.Value), 
    "LimeGreen", 
    IIF(Fields!CourseCode.Value = "50089109", 
     SWITCH(
      Fields!Marks.Value > 57, "YellowGreen", 
      Fields!Marks.Value >= 48, "Orange", 
      Fields!Marks.Value < 48, "Firebrick", 
      True, "HotPink" 
     ) 
     , 
     SWITCH(
      Fields!Marks.Value > 61, "YellowGreen", 
      Fields!Marks.Value >= 52, "Orange", 
      Fields!Marks.Value < 52, "Firebrick", 
      True, "HotPink" 
     ) 
    ) 
) 

아무것도 아무것도를 사용합니다 , 스위치 문과 일치하지 않는 항목은 분홍색으로 표시됩니다. 또한 switch 문에서 중간 표현식의 일부를 제거했음을 알 수 있습니다. 첫 x 째의 참 조건이 충족 될 때 switch.이 중지되기 때.에 이것들은 필요하지 않습니다. 아래의 '제작'버전에서 더 많은 것을 제거 할 수 있습니다.

또한 최종 스위치 식 true을 추가했습니다. Switch가 첫 번째 true 표현식에서 멈추는 것처럼 우리의 새로운 표현식에있는 true은 다음과 같이 작동합니다. else

일단 문제를 해결하면 프로덕션 버전은 다음과 같습니다.

생산 버전

=IIF(IsNothing(Fields!Marks.Value), 
    Nothing, 
    IIF(Fields!CourseCode.Value = "50089109", 
     SWITCH(
      Fields!Marks.Value > 57, "YellowGreen", 
      Fields!Marks.Value >= 48, "Orange", 
      True, "Firebrick" 
     ) 
     , 
     SWITCH(
      Fields!Marks.Value > 61, "YellowGreen", 
      Fields!Marks.Value >= 52, "Orange", 
      True, "Firebrick" 
     ) 
    ) 
) 
+0

고마워, 잘 했어. 또한 내가 도움이되지 않은 CourseCode를 인용 한 사실을 놓쳤습니다. –