2011-11-03 6 views
5

レポートサービスでこの式を使用することができませんでした。 IFとELSE IF文を使用する必要があります。ご意見ありがとうございます。スイッチを使用したレポートサービス式

= Switch(IsNothing(Fields!field_date.Value),"", Fields!set_flag.Value=1,"Declined", Fields!field_name.Value) 

ここに私がしていることがあります。

If(IsNothing(Fields!field_date.Value)) Then ""; 

ElseIf Fields!set_flag.Value=1 Then "Declined"; 

Else Fields!field_name.Value 
+0

switch文にはどのようなエラーがありますか? –

答えて

7

SSRSではVBランタイムライブラリを使用していませんか?その場合、switchステートメントはdocumented hereであり、の要素が渡されている必要があります。個の要素が渡されます。これが問題の場合は、おそらくArgumentExceptionがスローされています。

デフォルトの戻り値を持つようにしたい場合は、あなたが常にtrueと評価ダミー条件を追加する必要があると思います:

= Switch(IsNothing(Fields!field_date.Value),"", Fields!set_flag.Value=1,"Declined", True, Fields!field_name.Value) 
+0

Sir、何らかの理由で表現がうまくいかない。 – nav100

+0

エラーは何ですか? –

+0

エラーは発生していません。私はまだフィールド名がset_flag = 1であっても表示されるのを見ることができます。 – nav100

0

GBNが提案のように、私はコードブロックを使用します。読みやすくなります。 Reporting Servicesで使用されているコードブロックについて、Microsoftからの使用方法を次に示します。http://msdn.microsoft.com/en-us/library/ms156028%28v=sql.100%29.aspx

コードブロックを使用しない場合は、式にIIFステートメントを連結できます。あなたの例を見てみると、それは

=IIF(IsNothing(Fields!field_date.Value),"",IIF(Fields!set_flag.Value=1,"Declined",Fields!field_name.Value) 

どれより2 IIFか、単に値を返すよりも、より複雑なもののようになり、その後、私は間違いなく、コードブロックのために行くだろう。それ以外の場合は、あなたの後にレポートを維持しなければならない人にとっては、それをずっと悪化させているだけです。

+0

複数のIIFを使用するとエラーが発生します。 – nav100

関連する問題