2017-11-16 5 views
0

レポートビルダー3で背景色の書式設定を行っていますが、この表現に問題があります。レポートを実行するには複雑すぎるのですか、何か不足していますか?Report Builderで入れ子になったIIF/SWITCH:エラーBC30201の式が予想されます。

擬似コード - マークがヌル(真)の場合、背景色は白、それ以外の場合は英語(数字)、フォーマットグレード(スイッチ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:背景色が設定されていない場合、デフォルトである「白」の代わりに「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文の中間の式の一部を削除したことに気づくでしょう。最初の真の条件が満たされたときにswitch文が停止するので、これらは必須ではありません。下の 'production'バージョンでは、さらに多くを削除できることがわかります。

最後のスイッチ式である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を引用した事実も忘れてしまった。 –

関連する問題