SSRS报告:字段为空时字段之间的额外空间

时间:2012-01-12 20:41:37

标签: ssrs-2008 reporting-services bids reportbuilder3.0

我有一个报告,显示的成员名称格式为:prefix,first,middle,last,suffix。报告代码如下所示:[name_prefix] [name_first] [name_middle] [name_last] [name_suffix]

每个字段条目之间只有一个空格,当成员具有中间名称时效果很好,但是当中间名称为Null时,在名字和姓氏之间呈现两个空格。我尝试使用如下表达式来解决问题:

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

我还调整了间距,如下所示:[name_first] [name_middle] [name_last],中间名和姓氏字段之间没有空格。我希望如果有一个中间名,名称之间会有空格,当中间名为null时,名字和姓氏之间只有一个空格。如果有一个中间名称,它会正确呈现,但如果中间名称为Null,则仍有一个额外的空格。所以我尝试了另一种方法,字段之间没有空格,如下所示:

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

同样的问题,在有中间名称的情况下工作正常,但在没有中间名称的情况下工作两个空格。我考虑过连接整个成员名称,但我想我会得到相同的结果。使用Crystal Reports完成的相同报告使用第一种方法,它可以正常工作。提前谢谢。

2 个答案:

答案 0 :(得分:3)

根据底层数据源,有可能在没有中间名的情况下,它被视为空字符串,而不是空字符串。

我建议修改表达式如下:

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

在字段中查找字符串长度的一个很好的测试是:

=Len(Fields!fieldName.Value)

答案 1 :(得分:0)

你在第一行所做的是正确的,我怀疑你从数据库中获得了一个空间的中间名;这就是它出现双倍的原因。