2012-01-12 73 views
1

我有一个报告,显示格式为:前缀,第一,中间,最后,后缀的成员名称。报告代码如下所示:[name_prefix] [name_first] [name_middle] [name_last] [name_suffix]SSRS报告:字段为空时字段之间的额外空间

每个字段条目之间有一个单独的空格,当成员具有中间名时效果很好,但当中间名在名字和姓氏之间是空的两个空格。我试图解决这个问题,看起来像这样的表达式:

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

我还调整了间隔,看起来像这样:[name_first] [name_middle] [name_last]与中间名和姓字段之间没有空格。我的希望是,如果有一个中间名,名称之间会有空格,当中间名为空时,名和姓之间只有一个空格。如果中间名称呈现正确,但如果中间名称为空,则仍有额外的空间。所以,我想另一种方法,看起来像这样的字段之间没有空格:

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

同样同样的问题,其中有一个中间的名字,但两个空格当没有正常工作。我曾考虑连接整个成员名称,但我想我会得到相同的结果。使用Crystal Reports完成的相同报告使用第一种方法,并且没有问题。先谢谢你。

回答

3

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

我建议修改的表达是类似如下:

=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 2012-01-13 20:13:22

+0

@PerPlexSystem:是的,我原本是指'<1'或'= 0',但不知何故混淆了它们!我很高兴你能够实现它的工作。 :) – 2012-01-13 20:20:44

0

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

+0

如果有一个空间,在字段为不存在的中间名称,我们期望在名字和姓氏之间看到*三个*空格。 – 2012-01-13 08:51:06