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

Ssrs 2008 SSRS报告:字段为空时字段之间的额外空间,ssrs-2008,reporting-services,bids,reportbuilder3.0,Ssrs 2008,Reporting Services,Bids,Reportbuilder3.0,我有一个报告,它以以下格式显示成员名称:前缀、第一、中间、最后、后缀。报告代码如下所示:[name\u prefix][name\u first][name\u middle][name\u last][name\u suffix] 每个字段条目之间只有一个空格,当成员有中间名时效果很好,但当中间名为Null时,名字和姓氏之间会出现两个空格。我尝试用如下表达式解决此问题: =IIF(IsNothing(Fields!name_middle.Value),"",Fields!name_middle

我有一个报告,它以以下格式显示成员名称:前缀、第一、中间、最后、后缀。报告代码如下所示:[name\u prefix][name\u first][name\u middle][name\u last][name\u suffix]

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

=IIF(IsNothing(Fields!name_middle.Value),"",Fields!name_middle.Value & " ")
=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 & " ")
=IIF(IsNothing(Fields!name_middle.Value)," "," " & Fields!name_middle.Value & " ")

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

您在第一行所做的是正确的,我怀疑您从数据库中得到了一个中间名,即空格;这就是它显示为双精度的原因。

根据基础数据源的不同,如果没有中间名,它可能被视为空字符串,而不是空字符串

我建议将该表述修改如下:

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

如果在字段中有一个空格用于不存在的中间名,我们希望在名字和姓氏之间看到三个空格。马克,你的解决方案工作得很好,只是我不得不将0改为1。我继续编辑/添加到你的帖子并接受了你的答案,希望你不介意。我相信造成这种差异的原因是因为我用于测试的数据实际上是长度为0且不为null的字符串。这是一个生产数据库,所以我无法控制用户是否保留中间名称不变,或者输入字段时保留空白;有些事我没有解释。再次感谢你@系统:是的,我最初的意思是