我有一个报告,显示的成员名称格式为: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完成的相同报告使用第一种方法,它可以正常工作。提前谢谢。
答案 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)
你在第一行所做的是正确的,我怀疑你从数据库中获得了一个空间的中间名;这就是它出现双倍的原因。