【问题标题】:SSRS Report: Extra space between fields when a field is nullSSRS 报告:当字段为空时,字段之间的额外空间
【发布时间】:2012-01-12 20:41:37
【问题描述】:

我有一个报告,它以以下格式显示成员名称:前缀、第一、中间、最后、后缀。报告代码如下所示:[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 完成的相同报告使用第一种方法,并且可以正常工作。提前谢谢你。

【问题讨论】:

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


    【解决方案1】:

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

    我建议修改表达式如下:

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

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

    =Len(Fields!fieldName.Value)
    

    【讨论】:

    • 马克,你的解决方案很完美,除了我必须将 0 更改为 1。我继续编辑/添加到你的帖子并接受你的答案,希望你不介意。我相信差异的原因是因为我用于测试的数据确实是长度为 0 且不为空的字符串。它是一个生产数据库,所以我无法控制用户是否保持中间名不变或输入该字段将其留空;我没有考虑到的事情。再次感谢您!
    • @PerPlexSystem:是的,我最初的意思是&lt;1=0,但不知何故把它们搞混了!我很高兴你能够让它工作。 :)
    【解决方案2】:

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

    【讨论】:

    • 如果字段中有一个空格用于不存在的中间名,我们希望在名字和姓氏之间看到 三个 个空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多