文章目录前言一、需求描述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_CProcCDselectC_PROC_CD,C_PROC_NMfromTAX_0007whereC_IS_USINGYandC_PROC_CD!PROCorderbyC_PROC_CD;3.2 下拉框数据源含参数ds_CMachineselectC_GROUP_LINE机台编码,C_MACHINE_NM机台名称fromTAX_0009whereC_PLANT_CD2400andC_IS_USINGYandC_MACHINE_FORM1and(C_PROC_CD${母卷工序}or${母卷工序})and(C_WORK_CENTER${工作中心}or${工作中心})orderbyC_MACHINE_CD;3.3 分组行数据源动态ds_groupselect-- 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_CODEt2.C_BAR_CODEinnerjoinTAX_0009 t4ont2.C_MACHINE_IDt4.C_MACHINE_CDinnerjointax_0006 t5ont5.C_WORK_CENTERt4.C_WORK_CENTERwheret1.C_CLASSIFY1andt1.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_sumselectt1.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_CODEt2.C_BAR_CODEinnerjoinTS_key_value t3ont3.C_PCODElost_typeandt1.C_LOSS_TYPEt3.C_CODEinnerjoinTAX_0009 t4ont2.C_MACHINE_IDt4.C_MACHINE_CDwheret1.C_CLASSIFY1andt1.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,损纸类型)3.8 数据区总计字段四、效果展示
【帆软】动态样式分类汇总报表
发布时间:2026/5/16 14:24:59
文章目录前言一、需求描述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_CProcCDselectC_PROC_CD,C_PROC_NMfromTAX_0007whereC_IS_USINGYandC_PROC_CD!PROCorderbyC_PROC_CD;3.2 下拉框数据源含参数ds_CMachineselectC_GROUP_LINE机台编码,C_MACHINE_NM机台名称fromTAX_0009whereC_PLANT_CD2400andC_IS_USINGYandC_MACHINE_FORM1and(C_PROC_CD${母卷工序}or${母卷工序})and(C_WORK_CENTER${工作中心}or${工作中心})orderbyC_MACHINE_CD;3.3 分组行数据源动态ds_groupselect-- 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_CODEt2.C_BAR_CODEinnerjoinTAX_0009 t4ont2.C_MACHINE_IDt4.C_MACHINE_CDinnerjointax_0006 t5ont5.C_WORK_CENTERt4.C_WORK_CENTERwheret1.C_CLASSIFY1andt1.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_sumselectt1.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_CODEt2.C_BAR_CODEinnerjoinTS_key_value t3ont3.C_PCODElost_typeandt1.C_LOSS_TYPEt3.C_CODEinnerjoinTAX_0009 t4ont2.C_MACHINE_IDt4.C_MACHINE_CDwheret1.C_CLASSIFY1andt1.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,损纸类型)3.8 数据区总计字段四、效果展示