2012-01-12 19 views
1

メンバー名を:prefix、first、middle、last、suffixの形式で表示するレポートがあります。レポートコードは次のようになります。[name_prefix] [name_first] [name_middle] [name_last] [name_suffix]SSRSレポート:フィールドがNULLのときのフィールド間の余分なスペース

各フィールドエントリの間には1つのスペースがあり、メンバーがミドルネームを持っているときに効果的ですが、ミドルネームNullです。姓と名の間に2つのスペースが表示されます。私はこのようになります式で問題を解決しようとした:

=IIF(IsNothing(Fields!name_middle.Value),"",Fields!name_middle.Value & " ") 

また、私はこのように見えるの間隔を調整する:[name_first] [name_middle] [name_last]ミドルと最後の名前フィールドの間にスペースなし。私の希望は、中間の名前があった場合、名前の間にスペースがあり、中間の名前がヌルであった場合は、姓と名の間にスペースが1つしかないことです。ミドルネームがあると正しくレンダリングされますが、ミドルネームがNullの場合はまだ余分なスペースがあります。 、

=IIF(IsNothing(Fields!name_middle.Value)," "," " & Fields!name_middle.Value & " ") 

再び同じ問題がないときにミドルネームが、2つのスペースがある場合には正常に動作します:だから私はこのようになりますフィールド間のスペースなしで別の方法を試してみました。私は会員名全体を連結することを考えましたが、私は同じ結果を持つと思います。 Crystal Reportsで実行された同じレポートは、最初の方法を使用し、問題なく動作します。前もって感謝します。

答えて

3

基礎となるデータソースによっては、中間名がない場合はnullではなく空の文字列として扱われる可能性があります。

私は次のようになり表現を改正提案:

=IIF(IsNothing(Fields!name_middle.Value) OR Len(Fields!name_middle.Value) < 1, 
    "",Fields!name_middle.Value & " ") 

フィールド内の文字列の長さを見つけるための良いテストは次のとおりです。

=Len(Fields!fieldName.Value) 
+0

0、1に変更しなければ、あなたのソリューションは完璧に動作します。私は先に進み、あなたの投稿に編集/追加し、あなたの答えを受け入れました。違いの理由は、私がテスト用に使用していたデータが実際に長さ0の文字列でありヌルではなかったためです。これはプロダクションデータベースなので、ユーザーがミドルネームを手の届かないところに置いたり、フィールドを空白のままにしたりすることはできません。私が説明しなかったもの。ありがとうございました! – PerPlexSystem

+0

@PerPlexSystem:はい、私はもともと '<1'または' = 0'のいずれかを意味しましたが、何とかそれらが混ざってしまいました!私はあなたがそれを働かせることができてうれしいです。 :) –

0

あなたが最初の行で行ったことは正しいです、そして、あなたはスペースであるデータベースからミドルネームを得ていると思います。それが二重に見える理由です。

+0

にスペースがある場合私たちは、姓と名の間に* 3つのスペースがあることが予想されます。 –

関連する問題