5

SSRS 2005では、データセットがリンクされたテーブルがあります。 フィールドの値がヌルで、ヌルでない場合は小数点以下1桁があることを確認し、%記号などを追加するようにデータをフォーマットします。nullをチェックするSQL 2005 Reporting Services

これはフィールド/列:

データがnullの場合は動作していないようです(データがあれば正常に動作します)。レポートは表示されますが、フィールドは#ERRORとして表示されます。

nullの場合でも両方のケースが有効かどうかを確認すると思います。 if文を使用してnullをフォーマットするのを避けようとしています。

答えて

3

データセットを照会するときに、ISNULL(fieldname、0)を使用してみます。

ISNULL演算子(つまりOracle)を使用せずにデータソースに接続する場合は、iSeries、oracleおよびsql allがサポートするCOALESCE(fieldname、0)を試してください。

+0

ありがとう、私はオラクルで動作するものを探していましたが、見つけられませんでした。 – MaxGeek

+1

OracleにはNVL(columnname、0)があり、ISNULL()のように動作します。 – criticalfix

2

あなたはSQLクエリではなく、レポートレベルでnullをチェックすることができにIsDBNull

+0

残念ながら、それは違いがないようです。 でも、もしこれを行っても、 = iif(True、 "Hello World"、Format(CDbl(トリム)(フ​​ィールド(COL01.Value、 "%"、 ")))、" N1 " ") それはまだそれが偽の場合をテストしているかのように思える。 データがある場合はHello Worldを表示しますが、そうでない場合は#ERRORを表示します。 – MaxGeek

1

を使用してみてください。 IsNull(fieldname、0)のように%のフォーマットをしてください。もちろん、データはSQL Serverからのものです。

+0

これは正しいアイデアだと思うが、実際にSQL Serverをデータソースとして使用しているわけではない。私はそれを言及しただろうが、私はそれを私のSQLクエリで修正することを考えなかった。 – MaxGeek

4

SSRS式は、式内のすべてのオペランドの完全な(つまり短絡ではない)評価を行うVisual Basicを使用して評価されます。 IIf(cond、truexp、falsexp)では、condのほかに、truexpとfalsexpの両方が評価され、condの値にかかわらずスローされる可能性があります。

VB.NET 2.0では統合機能がないようですので、レポートのコードセクションに1つ追加することができます。 Oracleから返されたDecimalの場合

Function Coalesce(fieldValue As Object, defaultValue As Decimal) As Decimal 
    If IsDBNull(fieldValue) OrElse IsNothing(fieldValue) Then 
    Coalesce = defaultValue 
    Else 
    Coalesce = CDec(fieldValue) 
    End If 
End Function 

汎用関数も定義できます。合体(Of TResult)。

+0

これは良いアイデアです。 – MaxGeek

0

私はこの問題を抱えていましたが、私はswitch文を使って、書かれた順番で条件を評価し、同時に評価されているiif文の両側を回っているようです。

イアン

+0

私の悪い、ssrsで私はちょうどそれがすべてのステートメントも評価され、したがってエラーを与えるようにいくつかのさらなるテストを行っている –

関連する問題