报表生成器3.0中的switch语句用于比较值列表

时间:2017-01-19 18:18:45

标签: vb.net reporting-services

我需要在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")

2 个答案:

答案 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 ...