文章目录
- 前言
- 一、需求描述
- 1.1 核心功能点
- 1.2 技术实现建议
- 二、技术要点
- 2.1 配置数据库连接
- 2.2 查询参数
- 2.3 模板数据集
- 2.4 查询参数
- 三、解决方案
- 3.1 下拉框数据源(不含参数)
- 3.2 下拉框数据源(含参数)
- 3.3 分组行数据源(动态)
- 3.4 汇总列数据源(动态)
- 3.5 下拉框绑定数据源
- 3.6 数据区绑定行数据源
- 3.7 数据区绑定列数据源
- 3.8 数据区总计字段
- 四、效果展示
前言
【帆软FineReport】 聚焦企业级数据可视化与报表开发。本专栏深入解析 FineReport 与 FineBI 核心技巧,涵盖复杂报表设计、参数联动、填报功能及大屏可视化(决策平台)。
拒绝空谈理论,专注解决数据孤岛、报表自动化及性能优化等企业痛点。我将分享多年沉淀的帆软开发套路与 SQL 优化经验,助你快速从“取数工具人”进阶为“数据架构师”。关注我,用报表驱动业务增长!
一、需求描述
1.1 核心功能点
动态构造行与列
分类汇总与小计
数据行过滤
1.2 技术实现建议
后端逻辑:推荐使用 SQL 的ROLLUP/CUBE或GROUPING SETS实现高效的分组汇总;若数据结构复杂,可在 C#/Java 中使用 LINQ 或 Stream API 进行内存聚合。
前端渲染:使用 Handsontable、AG Grid 或 帆软(FineReport)的聚合单元格功能,绑定分组数据模型。
二、技术要点
2.1 配置数据库连接
【服务器】 -->【定义数据连接】
2.2 查询参数
【模板】 -->【模板参数】
2.3 模板数据集
【模板】 -->【模板数据集】
2.4 查询参数
【组件设置】–>【全部添加】
三、解决方案
3.1 下拉框数据源(不含参数)
ds_CProcCD
selectC_PROC_CD,C_PROC_NMfromTAX_0007whereC_IS_USING='Y'andC_PROC_CD!='PROC'orderbyC_PROC_CD;3.2 下拉框数据源(含参数)
ds_CMachine
selectC_GROUP_LINE'机台编码',C_MACHINE_NM'机台名称'fromTAX_0009whereC_PLANT_CD='2400'andC_IS_USING='Y'andC_MACHINE_FORM='1'and(C_PROC_CD='${母卷工序}'or'${母卷工序}'='')and(C_WORK_CENTER='${工作中心}'or'${工作中心}'='')orderbyC_MACHINE_CD;3.3 分组行数据源(动态)
ds_group
select-- t1.C_PLANT_ID '实体工厂',DATE_FORMAT(t1.D_PRO_DATE,'%Y-%m-%d')'日期',t2.C_PROC_CD'母卷工序',t4.C_WORK_CENTER'工作中心',t5.C_WORK_CENTER_NAME'工作中心名称',t4.C_GROUP_LINE'机台编码',-- IFNULL(t4.C_MACHINE_NM, t4.C_GROUP_LINE) '机台名称',REPLACE(t4.C_MACHINE_NM,'绿色','')'机台名称',t2.C_CLASS_GROUP'班组'fromTOP_3140 t1innerjointop_3240 t2ont1.C_OLD_BAR_CODE=t2.C_BAR_CODEinnerjoinTAX_0009 t4ont2.C_MACHINE_ID=t4.C_MACHINE_CDinnerjointax_0006 t5ont5.C_WORK_CENTER=t4.C_WORK_CENTERwheret1.C_CLASSIFY='1'andt1.C_PROC_CD1in('10004','10044')and(casewhen'${cboMachine}'!=''thenFIND_IN_SET(t4.C_GROUP_LINE,'${cboMachine}')>0else'${cboMachine}'=''end)groupbyDATE_FORMAT(t1.D_PRO_DATE,'%Y-%m-%d'),t2.C_PROC_CD,t4.C_WORK_CENTER,t4.C_GROUP_LINE,t2.C_CLASS_GROUPorderbyDATE_FORMAT(t1.D_PRO_DATE,'%Y-%m-%d'),t2.C_PROC_CD,t4.C_WORK_CENTER,t4.C_GROUP_LINE,t2.C_CLASS_GROUP;3.4 汇总列数据源(动态)
ds_sum
selectt1.D_PRO_DATE'日期',t2.C_PROC_CD'母卷工序',t4.C_WORK_CENTER'工作中心',t4.C_GROUP_LINE'机台编码',t2.C_CLASS_GROUP'班组',t1.C_LOSS_TYPE'损纸编码',IFNULL(t3.C_NAME,t1.C_LOSS_TYPE)'损纸类型',t1.N_LOSS_WGT'重量',1'件数'fromTOP_3140 t1innerjointop_3240 t2ont1.C_OLD_BAR_CODE=t2.C_BAR_CODEinnerjoinTS_key_value t3ont3.C_PCODE='lost_type'andt1.C_LOSS_TYPE=t3.C_CODEinnerjoinTAX_0009 t4ont2.C_MACHINE_ID=t4.C_MACHINE_CDwheret1.C_CLASSIFY='1'andt1.C_PROC_CD1in('10004','10044')andt3.C_GROUPlike'%10004%'3.5 下拉框绑定数据源
【控件设置】–>【属性】–>【数据字典】–>【数据集】
3.6 数据区绑定行数据源
3.7 数据区绑定列数据源
横向扩展
按条件过滤 if(len(损纸类型 ) = 0 , n o f i l t e r , 损纸类型) = 0,nofilter,损纸类型)=0,nofilter,损纸类型)