历史版本15 :下拉复选框控件联动并实现动态列 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 预期效果

当分组报表中数据列较多,但数据量不多时,用户可使用动态分组报表灵活的查看不同维度的汇总数据。

当选择对应的参数的值,点击查询即可展示对应分组列值的分组汇总数据,如下图所示:

222

1.2 实现思路

动态分组报表,使用普通的 if 公式、SQL 语句和 FineReport 本身的功能即可实现。

2. 示例编辑

2.1 设计报表

2.1.1 新增数据集

新建普通报表,新增数据集 ds1,SQL 语句为:

SELECT 地区 ${if(len(销售员)=0,"",",销售员")} ${if(len(产品类型)=0,"",",产品类型")} ${if(len(产品)=0,"",",产品")} ,sum(销量) as 销量汇总 
FROM 销量
where 1=1 
${if(len(销售员)==0,"","and 销售员 in ('" +销售员+ "')")} 
${if(len(产品类型)==0,"","and 产品类型 in ('" +产品类型+ "')")} 
${if(len(产品)==0,"","and 产品 in ('" +产品+ "')")} 
group by 地区 
${if(len(销售员)=0,"",",销售员")} 
${if(len(产品类型)=0,"",",产品类型")} 
${if(len(产品)=0,"",",产品")}

注:由于设置了销售员、产品类型、产品三列为动态分组列,即参数为空时,销售员、产品类型、产品这三个字段不显示。所以销售员、产品类型、产品三个参数要先设置默认值。

2.1.2 报表样式

报表主体样式如下图所示:

1575009327872540.png

2.2 设置参数

2.2.1 新增参数数据集

1)增加数据集「销售员」,SQL 语句为:SELECT distinct 销售员 FROM 销量

2)增加数据集「产品类型」,SQL 语句为:SELECT distinct 产品类型 FROM 销量 where 1=1 ${if(len(销售员)==0,"","and 销售员 in ('" +销售员+ "')")}

3)增加数据集「产品」,SQL 语句为:SELECT distinct 产品 FROM 销量 where 1=1 ${if(len(销售员)=0,"","and 销售员 in ('"+销售员+"')")} ${if(len(产品类型)=0,"","and 产品类型 in ('"+产品类型+"')")}

注:参数之间做了联动,所以需要在数据集 SQL 中添加对应的参数过滤条件。

2.2.2 设置参数界面

1)添加参数

点击参数界面 ,右上角参数选择全部添加,如下图所示:

222

2)控件设置

将三个参数控件设为下拉复选框,勾选返回字符串,分割符设置为 ',' ,如下图所示:

1575010174144144.png

3)设置数据字典

为各控件绑定对应的数据字典。例如销售员下拉复选框控件绑定数据字典,如下图所示:

1575010857330335.png

2.3 设置条件属性

给 C3、D3、E3 单元格设置条件属性。

列宽为 0,公式为:len($$$)=0,如下图所示:

1575011275651164.png

2.4 效果查看

点击分页预览,效果如1.1 预期效果所示。

3. 已完成模板编辑

已完成模板,可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\primary\GroupReport\动态分组.cpt

点击下载模板:动态分组.cpt