finereport普通报表实现动态列控制数据合计及下钻获取参数问题
2.在报表页面添加好需要的字段后,对需要动态展示的字段分别添加条件属性,选择 列宽,添加公式 (使用 INARRAY 函数的好处是如果某一列为展示,那一列是被隐藏起来而不是删除掉了,如果用len函数,那隐藏列会被展示列替代,在传递给下钻报表参数的时候,如果参数比较多可能会影响比较大)= 0,'a.产品类型 AS 产品类型,','')}${if(len(产品)=0,"","and 产品 in ('"
做帆软报表时候有个需求是通过下拉复选框控件来控制页面上列的展示,同时所属的数字类字段要根据展示的字段做聚合操作,金额类字段同时下钻时也要保持当前所选列的条件状态,试了很多办法,感觉这个现在这个虽然比较笨,但是对初学者很友好。1.创建模板数据集
···
SELECT 英文简称,
${if(FIND("地区",colname) != 0,'a.地区 AS 地区,','')}
${if(FIND("销售员",colname) != 0,'a.销售员 AS 销售员,','')}
${if(FIND("产品类型",colname) != 0,'a.产品类型 AS 产品类型,','')}
${if(FIND("产品",colname) != 0,'产品 as 产品,','')}
sum(销量) as 销量
FROM 销量 a
group by
${if(FIND("地区",colname) != 0,'a.地区,','')}
${if(FIND("销售员",colname) != 0,'a.销售员,','')}
${if(FIND("产品类型",colname) != 0,'a.产品类型,','')}
${if(FIND("产品",colname) != 0,'产品,','')}
英文简称
···
2.在报表页面添加好需要的字段后,对需要动态展示的字段分别添加条件属性,选择 列宽,添加公式 (使用 INARRAY 函数的好处是如果某一列为展示,那一列是被隐藏起来而不是删除掉了,如果用len函数,那隐藏列会被展示列替代,在传递给下钻报表参数的时候,如果参数比较多可能会影响比较大)
INARRAY('销售员',$colname) = 0

3.添加内置数据集,把需要的列名字段写入,供给复选框控件使用

4.把主数据集中的参数添加到控件区域,数据字典配置为刚添加的内置数据集,默认数据根据自己实际需求填写

这个时候主页面基本就配置完成了,销量字段会跟随展示字段做汇总处理。

如果销量字段有下钻需求的时候,参数的传递不会因为列为展示而传递错误的数据。同时下钻报表的数据集配置也要根据传递的参数做处理,where 条件中的参数字段要做判断。
${if(len(产品)=0,"","and 产品 in ('" + 产品 + "')")}

仅供参考,下课。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)