我有一个列表框,可以从listbox
中选择不同的值(三个中的一个)。
然后过滤图表,我会根据总计显示条形图。
目前,当从listbox
中选择一个值时,它可以工作,我要求图表使用多个选项(即三个中的两个或三个中的三个)但是使用的语法不是&# 39;工作。
以下是我在图表Properties,Expression
中用于选择的行Sum ( {< Bank_Division = {'$(=GetFieldSelections(BU))'} >} Amt_Requested)
我猜测它与GetFieldSelections
方法有关但是到目前为止所有答案都建议将连接作为替代,我不知道这将如何解决我的要求。
感谢您的帮助
答案 0 :(得分:3)
要做你想做的事,你应该使用这个表达式
=chr(39)&concat(distinct FieldB,chr(39)&','&chr(39))&chr(39)
然后您的设置分析看起来像这样
Sum ( {< Bank_Division = {'$(=concat(distinct BU,chr(39)&','&chr(39)))'}>} >} Amt_Requested)
如前所述,getfieldselections()函数返回带有'$(= GetFieldSelections(BU))'的值将导致'value1,value2'设置分析无法使用。它需要一个以逗号分隔的列表,每个值都有单引号,而不是定义列表的末尾。
concat函数将导致'value1','value2'。 chr(39)只是将引号插入到表达式输出中的技巧,而不是让它们作为表达式定义的一部分。 distinct是必要的,因为concat()返回每个可能的值,除非你告诉它只带来唯一值。
使用concat()而不是getfieldselections()的另一个原因是,当没有选择任何内容时,getfieldselections将返回undefined,concat会一直返回可能值的列表,以表彰可能限制该列表的其他选择。所以它的行为就像原生的QlikView引擎一样。
最后一个陈述是为什么你应该仔细考虑你是否需要在你的表达式中使用它,或者你是否可以让QlikView做它作为开销所做的事情,特别是如果你需要区分长列表可能是非常高的东西无论如何,该程序是为了自己而构建的。
我唯一一次这样做是因为使用if()会因为复杂的数据模型而导致数据完整性问题,即便如此,在我重新修复底层数据之前,它确实是一个快速修复。