【问题标题】:SSRS Switch Statement Only Working on Last Statement and not the OthersSSRS Switch 语句仅适用于最后一个语句,而不适用于其他语句
【发布时间】:2021-08-09 19:53:45
【问题描述】:

我正在编写一份报告,用户从下拉列表中选择索赔人(此列表总是在变化),我想在自己的行上显示每个姓名,并让前 2 个索赔人加粗。这是我写的表达式

=switch(Parameters!Claimant.Count = 1, "<b>" + Parameters!Claimant.Value(0) + "</b>"
,Parameters!Claimant.Count= 2,"<b>" + Parameters!Claimant.Value(0) + "</b>" + "<br />" +"<b>" + Parameters!Claimant.Value(1)+ "</b>"
,Parameters!Claimant.Count = 3,"<b>" + Parameters!Claimant.Value(0) + "</b>" + "<br />" +"<b>" + Parameters!Claimant.Value(1)+ "</b>" + "<br />" + Parameters!Claimant.Value(2)
,Parameters!Claimant.Count = 4,"<b>" + Parameters!Claimant.Value(0) + "</b>" + "<br />" +"<b>" + Parameters!Claimant.Value(1)+ "</b>" + "<br />" + Parameters!Claimant.Value(2) + "<br />" + Parameters!Claimant.Value(3)
,TRUE,"Too many people.")

如您所见,它会检查有多少索赔人被选中,并且应该根据我提供的内容运行。当我运行报告时,如果我选择 4 个或更多索赔人,它将正确运行。如果我选择 3 或更少,它只会显示 #Error。有谁知道我做错了什么以及如何解决这个问题?

【问题讨论】:

    标签: reporting-services switch-statement ssrs-2008-r2


    【解决方案1】:

    我认为错误是由于值不存在造成的。

    您可以使用 JOIN =JOIN(Parameters!Claimant.Value, "&lt;br&gt;"),但这不适用于前两个的粗体。

    您可以用粗体结束将 JOIN 包装在 REPLACE 中。 REPLACE 函数将让您指定只替换一次,以便您可以删除第一个粗体结束标记。会有一些额外的粗体关闭标签,但这应该不是问题。

    ="<b>" & 
        REPLACE(
            JOIN(Parameters!Claimant.Value, "</b><br>"), 
                "</b><br>", 
                "<br>", 
                , 1
                , 1
                )
    & "</b>"
    

    我添加了一个额外的关闭标签,以防只有一个选择。

    【讨论】:

    • 很好的答案,很好地利用了 REPLACE 的限制
    • 非常感谢您的帮助!这正是我想要的。
    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多