1

我有一个报告,它以以下格式显示成员名称:前缀、第一个、中间、最后一个、后缀。报告代码如下所示: [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,则仍然有一个额外的空格。所以我尝试了另一种在字段之间没有空格的方法,如下所示:

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

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

4

2 回答 2

3

根据底层数据源,没有中间名的地方可能会被视为空字符串,而不是 null。

我建议将表达式修改为如下所示:

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

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

=Len(Fields!fieldName.Value)
于 2012-01-13T08:49:43.827 回答
0

您在第一行所做的是正确的,我怀疑您从数据库中获得了一个中间名,它是一个空格;这就是为什么它看起来是双重的。

于 2012-01-13T03:15:23.103 回答