web-dev-qa-db-ja.com

SSRSテキストボックスに空の値またはNull値が表示される

SSRS(2008)を使用して、null値または空の値を処理し、表示する他の値に置き換える最良の方法を見つけました。非常に明白な解決策は

=IIF(IsNothing(Fields!MyField.Value),"NA",Fields!MyFields.Value)

それは退屈ですが、私の希望はテキストボックスのEmptyTextプロパティのようなものを見つけることでしたが、残念ながら何もありませんでした。何か案は?このプロパティを作成するTextBoxベースからカスタムレポートアイテムを作成する必要がありますか?

18
keithwarren7

カスタム関数を呼び出しますか?

http://msdn.Microsoft.com/en-us/library/ms155798.aspx

さまざまなタイプの「空白」データを処理するために、常にケースstmtをそこに置くことができます

6
adolf garlic
=IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value))

この式を使用すると、答えが得られます。

ここで、CStrはStringデータ型を処理するためのデフォルト関数です。

9
rajsekar

サーバー側で変換することに同意しません。それを行うと、それに伴うすべての日付型ではなく文字列型として返されます(たとえば、文字列としてソートされます)

日付を扱うときの私の原則は、可能な限り日付を日付として入力し続けることです。

レポートサーバーのパフォーマンスのボトルネックに直面している場合、ロジックを損なうよりも適切な対処方法があります。

5
FunkyDexter

ソリューションよりも優れているとは限りませんが、COALESCEを使用して同じ結果を返すようにT-SQLを調整できます。

SELECT MyField = COALESCE(table.MyField, " NA")

NAの前に余分なスペースがある理由は、ソートによりNAの結果が最上部に配置されるようにするためです。データはさまざまである可​​能性があるため、これは素晴らしい選択肢ではないかもしれません。

2
Aaron D

SQL側で置換を実行することに同意しますが、ISNULL関数を使用するのが私の方法です。

SELECT ISNULL(table.MyField, "NA") AS MyField

私は通常、SQLサーバー上のデータの処理をできるだけ多く行い、SSRSでのデータ操作をできる限り少なくしようとします。これは主に、SQLサーバーがSSRSサーバーよりもかなり強力だからです。

0
Ryan

SQLまたはレポートコードのいずれか(Adolfにんにくの機能提案による)

現時点では、レポートでそれを行います。多忙なOLTP=サーバーと圧倒的なレポートサーバーに対するレポートはほとんどありません。異なるミックスがあれば、SQLで行います。

どちらの方法でも受け入れられます...

0
gbn

IsNothing()を動作させることができず、datasetにダミー行を作成したくありませんでした(たとえば、特定の顧客リストに対して、表示される月ごとにダミーの注文を作成します)。 null値は-247192と表示されていました。

Loとそれを使用してそれを抑制しました(少なくともMSFTが08R2からSSRSをより良く変更するまで)ので、私を許してください:

=iif(Fields!Sales_Diff.Value = -247192,"",Fields!Sales_Diff.Value)
0
SteveyFo

これを試して

=IIF(IsNothing(Fields!MyField.Value)=TRUE,"NA",Fields!MyFields.Value)
0
Akxaya