SSRS(2008)を使用して、null値または空の値を処理し、表示する他の値に置き換える最良の方法を見つけました。非常に明白な解決策は
=IIF(IsNothing(Fields!MyField.Value),"NA",Fields!MyFields.Value)
それは退屈ですが、私の希望はテキストボックスのEmptyTextプロパティのようなものを見つけることでしたが、残念ながら何もありませんでした。何か案は?このプロパティを作成するTextBoxベースからカスタムレポートアイテムを作成する必要がありますか?
カスタム関数を呼び出しますか?
http://msdn.Microsoft.com/en-us/library/ms155798.aspx
さまざまなタイプの「空白」データを処理するために、常にケースstmtをそこに置くことができます
=IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value))
この式を使用すると、答えが得られます。
ここで、CStrはStringデータ型を処理するためのデフォルト関数です。
サーバー側で変換することに同意しません。それを行うと、それに伴うすべての日付型ではなく文字列型として返されます(たとえば、文字列としてソートされます)
日付を扱うときの私の原則は、可能な限り日付を日付として入力し続けることです。
レポートサーバーのパフォーマンスのボトルネックに直面している場合、ロジックを損なうよりも適切な対処方法があります。
ソリューションよりも優れているとは限りませんが、COALESCEを使用して同じ結果を返すようにT-SQLを調整できます。
SELECT MyField = COALESCE(table.MyField, " NA")
NAの前に余分なスペースがある理由は、ソートによりNAの結果が最上部に配置されるようにするためです。データはさまざまである可能性があるため、これは素晴らしい選択肢ではないかもしれません。
SQL側で置換を実行することに同意しますが、ISNULL関数を使用するのが私の方法です。
SELECT ISNULL(table.MyField, "NA") AS MyField
私は通常、SQLサーバー上のデータの処理をできるだけ多く行い、SSRSでのデータ操作をできる限り少なくしようとします。これは主に、SQLサーバーがSSRSサーバーよりもかなり強力だからです。
SQLまたはレポートコードのいずれか(Adolfにんにくの機能提案による)
現時点では、レポートでそれを行います。多忙なOLTP=サーバーと圧倒的なレポートサーバーに対するレポートはほとんどありません。異なるミックスがあれば、SQLで行います。
どちらの方法でも受け入れられます...
IsNothing()
を動作させることができず、dataset
にダミー行を作成したくありませんでした(たとえば、特定の顧客リストに対して、表示される月ごとにダミーの注文を作成します)。 null値は-247192と表示されていました。
Loとそれを使用してそれを抑制しました(少なくともMSFTが08R2からSSRSをより良く変更するまで)ので、私を許してください:
=iif(Fields!Sales_Diff.Value = -247192,"",Fields!Sales_Diff.Value)
これを試して
=IIF(IsNothing(Fields!MyField.Value)=TRUE,"NA",Fields!MyFields.Value)