我正在尝试创建一个条形图,其中类别轴上使用的列由下拉列表设置的 3 个属性选择。我想要这样做,以便当我想要使用少于 3 列时,我可以在某些下拉列表中选择“无”。
如果我使用自定义表达式执行此操作
<[${BarChartXaxis1}] NEST [${BarChartXaxis2}] NEST [${BarChartXaxis3}]>
它仅在选择 3 列时有效,如果没有为任何下拉列表选择任何列,则会在可视化中给出“找不到列”错误。
如果还尝试了一个表达式,当第二个和第三个属性中的任何一个为 null 时考虑该表达式
CASE
WHEN ${BarChartXaxis2} IS NULL AND ${BarChartXaxis3} IS NULL THEN <[${BarChartXaxis1}]>
WHEN ${BarChartXaxis2} IS NULL AND ${BarChartXaxis3} IS NOT NULL THEN <[${BarChartXaxis1}] NEST [${BarChartXaxis3}]>
WHEN ${BarChartXaxis2} IS NOT NULL AND ${BarChartXaxis3} IS NULL THEN <[${BarChartXaxis1}] NEST [${BarChartXaxis2}]>
ELSE <[${BarChartXaxis1}] NEST [${BarChartXaxis2}] NEST [${BarChartXaxis3}]>
END
但是,当我尝试保存表达式时,这给了我一个错误,表示它在
<
之后无效。
上面的表达有其他的方法或者有问题吗?
我尝试了不同的选择。最初你的表达有一些问题:
1 - 尖括号需要围绕整个表达式
2 - 表达式中的属性值不是 NULL,而是空字符串,在属性名称两边加上引号并与空字符串进行比较。
但是,表达式解析器似乎仍然不喜欢 case 语句中的 NEST。
因此,您可以删除 None 选项,当您只需要一个变量时,将三个属性设置为相同并使用:
<[${BarChartXaxis1}] NEST [${BarChartXaxis2}] NEST [${BarChartXaxis3}]>
但这不太好,因为它重复了 X 轴标题中的变量。
如果您可以使用 IronPython,我建议将此脚本设置为在每次三个属性更改时运行:
您要提前定义文档属性“axisProp”。然后使用这个属性作为你的 X 轴。
prop1 = Document.Properties['BarChartXaxis1']
prop2 = Document.Properties['BarChartXaxis2']
prop3 = Document.Properties['BarChartXaxis3']
#From the script, the property does result as None when unset.
if prop2 is None and prop3 is None:
xaxisProp = "<${BarchartXaxis1}>"
elif prop2 is None and prop3 is not None:
xaxisProp = "<${BarchartXaxis1} NEST ${BarchartXaxis3}>"
elif prop3 is None and prop2 is not None:
xaxisProp = "<${BarchartXaxis1} NEST ${BarchartXaxis2}>"
else:
xaxisProp = "<${BarchartXaxis1} NEST ${BarchartXaxis2} NEST ${BarchartXaxis3}>"
Document.Properties['xaxisProp']=xaxisProp