SSRS Switch 语句仅适用于最后一条语句而不适用于其他语句

SSRS Switch Statement Only Working on Last Statement and not the Others

我正在处理一份报告,用户从下拉列表中选择索赔人(这个列表总是在变化),我想在它自己的行上显示每个名字,并让前 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.")

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

我认为错误是因为值不存在。

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

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

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

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