2012-03-27 2 views
2

누군가가 SSRS에서이 수식에 누락 된 내용을 알려주십시오. 아니면 더 나은 아직 누군가가 중첩 된 IIF 구문이 똑같은 쓸 수 있습니까?중첩 IIF 또는 SWITCH 문 구문이 올바르게 필요함

Switch(
    (Parameters!StartMonth.Value <= 1 And Parameters!EndMonth.Value >= 1), 
    (Code.CalculateFraction(
          (Fields!retail1.Value -Fields!cost1.Value) , Fields!cost1.Value 
          ) *100 
    ), 
    (Parameters!StartMonth.Value <= 2 And Parameters!EndMonth.Value >= 2), 
    (Code.CalculateFraction(
           (
           (Fields!retail1.Value +Fields!retail2.Value)- 
           (Fields!cost1.Value + Fields!cost2.Value) 
           ) , 
          (Fields!cost1.Value + Fields!cost2.Value) 
          ) *100 
    ) 
    ) 

이것은 나를 미치게 만듭니다. 간단히하기 위해 여기에 2 반복을 넣었습니다. 나는 이들 중 12 개를 가지고 있으며 다음 단계는 retail12까지 소매 1을 합산하고 cost12까지 비용 1을 합산해야합니다.

나는이 두 가지를 처음부터 제대로 이해할 수 없다.

는 편집 :

가 무엇인지 파악 :

나는 여전히 지금 노력하고 있어요는 첫 번째 조건의 값

=iif(
     Parameters!StartMonth.Value <= 1 AND Parameters!EndMonth.Value >= 1, 
     ReportItems!txtTotal2.Value, 
     iif(
     Parameters!StartMonth.Value <= 2 AND Parameters!EndMonth.Value >= 2, 
     ReportItems!txtTotal3.Value, 
      iif(
      Parameters!StartMonth.Value <= 3 AND Parameters!EndMonth.Value >= 3, 
      ReportItems!txtTotal4.Value, 
      Nothing 
       ) 
      ) 
    ) 

편집 2를 반환 부정확.

내 전체 논리가 예상 한 결과에 도달하지 못했습니다. 내 경우에는 내가 사용하는 것이 무엇이든 IIF인지 또는 스위치가 사실 일 뿐이므로 첫 번째 명령문 만 전환한다는 것이 명백합니다.

하지만 내가 원하는 결과를 얻으려면 논리를 변경해야했습니다.

iif(
     Parameters!EndMonth.Value = 1, 
     ReportItems!txtTotal1.Value, 
        Parameters!EndMonth.Value = 2, 
       ReportItems!txtTotal2.Value, 
      and so on 
      ) 

이렇게하면 내 문제가 해결되었습니다. 고마워요, 고마워요.

+0

이 오류를 받고 있습니까, 아니면 그냥 잘못된 결과를? –

답변

1

분리 된 IIF 문 사용해보십시오 :

=iif(
    Parameters!StartMonth.Value <= 1 AND Parameters!EndMonth.Value >= 1, 
    ReportItems!txtTotal2.Value, Nothing 
    ) OR 

iif(
    Parameters!StartMonth.Value <= 2 AND Parameters!EndMonth.Value >= 2, 
    ReportItems!txtTotal3.Value, Nothing 
    ) OR 

iif(
    Parameters!StartMonth.Value <= 3 AND Parameters!EndMonth.Value >= 3, 
    ReportItems!txtTotal4.Value, Nothing 
    ) 
1

구문이 한눈에 정확합니다. SSRS의 대부분의 장소에서 진술을 시작하려면 =이 필요합니다. 위의 코드는 CalculateFraction()에 대한 임베디드 코드를 참조합니다. 다른 곳에서 성공적으로 사용되고 있습니까?

+0

= 기호를 사용하고 있으며 CalculateFraction 메서드는 보고서의 대부분의 위치에서 잘 작동합니다. 어떤 오류도 발생하지 않습니다. 그게 나 혼란스러워. – aMazing

+0

왜 Switch 문이 작동하지 않는 것 같습니까? 입력 및 원하는 출력 예제를 제공하십시오. –