我需要在SSRS报告中使用switch语句来显示文本,具体取决于3个参数的值。参数是多值的,它们的默认值设置为0和1.因此,如果参数设置为1,则显示文本。 这是我目前的开关声明:
=Switch(Parameters!NormalBirthWeight.Value(0) <> "0", "Normal Birth Weight", Parameters!LowBirthWeight.Value(0) <> "0", "Low Birth Weight", Parameters!VerylowBirthWeight.Value(0) <> "0", "Very Low Birth Weight")
问题在于,无论参数设置如何,都会显示“正常出生体重”。 因此,默认情况下,NormalBirthWeight设置为0和1.在数据集中,当我只需要Normal权重时,此位设置为1。 无论显示的数据集如何,文本始终为“正常出生体重”。
我尝试使用:
=Switch(Parameters!NormalBirthWeight.Value(0) = "1", "Normal Birth Weight", Parameters!LowBirthWeight.Value(0) = "1", "Low Birth Weight", Parameters!VerylowBirthWeight.Value(0) = "1", "Very Low Birth Weight")
但是出现相同的结果,始终显示正常出生体重文本。
VB中有没有办法使用'IN'和类似的列表:
Parameters!NormalBirthWeight.Value IN ("1", "0")
答案 0 :(得分:0)
您可以使用这样的表达式在SSRS中执行assembly.Location
:
IN
上面的表达式检查参数中是否选择了=IIf(
Array.IndexOf(Parameters!NormalBirthWeight.Value,"1")>-1,"Normal Birth Weight",
""
)
。如果是,则返回"1"
否则返回空字符串"Normal Birth Weight"
。
如果要使用""
语句,请注意,因为第一个求值为Switch
的表达式会将值返回到整个表达式:
true
在这种情况下,如果NormalBirthWeight参数默认选择或设置为“1”,它将始终返回=Switch(
Array.IndexOf(Parameters!NormalBirthWeight.Value,"1")>-1,"Normal Birth Weight",
Array.IndexOf(Parameters!LowBirthWeight.Value,"1")>-1,"Low Birth Weight",
Array.IndexOf(Parameters!VerylowBirthWeight.Value,"1")>-1,"Very Low Birth Weight"
)
。
如果有帮助,请告诉我。
答案 1 :(得分:0)
您可以加入所有选定参数到一个字符串中,然后使用 INSTR 从该字符串中查找所需的值。管道(|)用于确保 10 是唯一值时 1 。
=Switch(INSTR("|" & Join(Parameters!NormalBirthWeight.Label, "|") & "|", "|1|") > 0 ...