关联过滤
更新时间: 2021-11-29 15:58:59
需求描述
当报表中有多个下拉框时,后面下拉框的选项需根据前面下拉框选中的值而改变。这就是关联过滤。所谓关联过滤是指两个或多个下拉框之间的关联关系,前一个下拉框选择的内容决定了后一个下拉框的下拉选择项。
比如:地区和城市两个下拉框,当地区下拉框选择了某一个地区后,城市下拉框自动的进行关联过滤,列出属于该地区的所有城市,过滤掉属于其他地区的城市。
解决方案
可以使用数据集选择编辑风格中的关联过滤功能。勾选【关联过滤】复选框,便可以设置与当前字段相关联的字段和过滤条件。
过滤来源:下拉可选通用查询其他条件 过滤项:下拉可选当前下拉数据集的字段
例如:“城市”字段设置为数据集选择编辑风格,并为其设置关联字段为“地区”,可达到下拉选项仅显示为华北地区的城市的效果,如下图所示:
预览效果如下图所示: 当地区为“华北”城市字段仅显示地区为华北的城市名称。
当地区为“华南”时,城市字段的下拉可选项仅显示华南地区的城市名称。
特别地,系统还支持手写表达式,用报表表达式来生成sql语句的where条件来达到过滤的效果。点击【表达式】按钮切换到表达式页面,即可手动输入表达式。
举例:
例1:取条件宏里的条件值,拼接过滤表达式。
"地区='"+conditionMacro("DEMO_SALESDAY.地区")+"'"
例2:整数和字符串进行比较时,需要加引号。
"订单ID='"+@arg1+"'"
,后台会将表达式拼接成 订单ID=’181’ 放到SQL的where条件部分
例3:过滤表达式使用复选参数值。
"订单ID in ('"+rplc(@arg1,",","','")+"')"
,后台会将表达式拼接成 订单ID in (‘181’,’182’,’183’) 放到SQL的where条件部分