需求描述

当报表中有多个下拉框时,后面下拉框的选项需根据前面下拉框选中的值而改变。这就是关联过滤。所谓关联过滤是指两个或多个下拉框之间的关联关系,前一个下拉框选择的内容决定了后一个下拉框的下拉选择项。

比如:地区和城市两个下拉框,当地区下拉框选择了某一个地区后,城市下拉框自动的进行关联过滤,列出属于该地区的所有城市,过滤掉属于其他地区的城市。

解决方案

可以使用数据集选择编辑风格中的关联过滤功能。勾选【关联过滤】复选框,便可以设置与当前字段相关联的字段和过滤条件。

过滤来源:下拉可选通用查询其他条件 过滤项:下拉可选当前下拉数据集的字段

例如:“城市”字段设置为数据集选择编辑风格,并为其设置关联字段为“地区”,可达到下拉选项仅显示为华北地区的城市的效果,如下图所示: 关联过滤 - 图1

预览效果如下图所示: 当地区为“华北”城市字段仅显示地区为华北的城市名称。 关联过滤 - 图2

当地区为“华南”时,城市字段的下拉可选项仅显示华南地区的城市名称。 关联过滤 - 图3

特别地,系统还支持手写表达式,用报表表达式来生成sql语句的where条件来达到过滤的效果。点击【表达式】按钮切换到表达式页面,即可手动输入表达式。

关联过滤 - 图4 举例: 例1:取条件宏里的条件值,拼接过滤表达式。 "地区='"+conditionMacro("DEMO_SALESDAY.地区")+"'"

例2:整数和字符串进行比较时,需要加引号。 "订单ID='"+@arg1+"'" ,后台会将表达式拼接成 订单ID='181' 放到SQL的where条件部分

例3:过滤表达式使用复选参数值。 "订单ID in ('"+rplc(@arg1,",","','")+"')" ,后台会将表达式拼接成 订单ID in ('181','182','183') 放到SQL的where条件部分