【发布时间】:2015-05-20 10:10:38
【问题描述】:
我在编写一些关于 RB 的报告时遇到了问题。
我有一个 tablix,其中的列是一天中的时间,而行是不同的产品。我还有一个包含 3 个值(AM、PM、NIGHT)的参数。
这里的重点是,如果参数设置为AM,tablix只显示6到12的列,如果设置为PM,tablix显示12到18,...
我可以通过使用过滤器来显示时间间隔(6 到 12),我告诉他“小时”在“6、7、8、9、10、11、12”中。但是当我将过滤器值设置如下时它不起作用:
表达式:=Cstr(Fields!ProdHour.Value)
接线员:IN
价值:
=iif(join(Parameters!Shift.Value) = "AM",
"6, 7, 8, 9, 10, 11, 12" ,
iif(join(Parameters!Shift.Value) = "PM",
"13, 14, 15, 16, 17, 18",
iif(join(Parameters!Shift.Value) = "NIGHT",
"19, 20, 21, 22, 23, 0",
false)
)
)
你知道我该如何解决这个问题吗?尝试更改 Integer 中的每个数字,但没有成功...
【问题讨论】:
-
您是否尝试过使用 switch 语句代替一系列嵌套的 iif 语句?
-
我没有,我会尝试并反馈。谢谢
-
我认为 SWITCH 函数只允许“真”的“假”的 1 个值。它与 IIF() 语句相同。我从 microsoft 站点中获取了示例:SWITCH(Customer Type = "I", "Individual", Customer Type = "S", "Shop") “个人,Indiv1,Indiv2,……”你明白我的意思吗?我需要它给出与使用以下过滤器集相同的结果:表达式:=Fields!Hour.Value 运算符:IN 值:6,7,8,9,10,11,12
-
我不确定我是否在关注你。在您的问题中,您的 iif 语句返回一个逗号分隔的字符串。当您返回一个字符串值时,我没有看到使用开关的问题。并评估每段开关的 1 个真假陈述
-
您似乎误解了@MaximeCoppée 的开关功能。它允许您为任意数量的条件中的第一个真实条件返回一个值。逗号分隔的字符串是“一个值”。所以你可以做 MyField = "AM", "1,2,3", MyField="PM","4,5,6",MyField="NIGHT","7,8,9"。但是,也就是说,我建议您尝试将嵌套 IIF 表达式末尾的“false”更改为空字符串。
标签: reporting-services ssrs-tablix reportbuilder iif