【帆软】动态样式分类汇总报表

文章目录

    • 前言
    • 一、需求描述
      • [1.1 核心功能点](#1.1 核心功能点)
      • [1.2 技术实现建议](#1.2 技术实现建议)
    • 二、技术要点
      • [2.1 配置数据库连接](#2.1 配置数据库连接)
      • [2.2 查询参数](#2.2 查询参数)
      • [2.3 模板数据集](#2.3 模板数据集)
      • [2.4 查询参数](#2.4 查询参数)
    • 三、解决方案
      • [3.1 下拉框数据源(不含参数)](#3.1 下拉框数据源(不含参数))
      • [3.2 下拉框数据源(含参数)](#3.2 下拉框数据源(含参数))
      • [3.3 分组行数据源(动态)](#3.3 分组行数据源(动态))
      • [3.4 汇总列数据源(动态)](#3.4 汇总列数据源(动态))
      • [3.5 下拉框绑定数据源](#3.5 下拉框绑定数据源)
      • [3.6 数据区绑定行数据源](#3.6 数据区绑定行数据源)
      • [3.7 数据区绑定列数据源](#3.7 数据区绑定列数据源)
      • [3.8 数据区总计字段](#3.8 数据区总计字段)
    • 四、效果展示

前言

【帆软FineReport】​ 聚焦企业级数据可视化与报表开发。本专栏深入解析 FineReport​ 与 FineBI​ 核心技巧,涵盖复杂报表设计、参数联动、填报功能及大屏可视化(决策平台)。

拒绝空谈理论,专注解决数据孤岛、报表自动化及性能优化等企业痛点。我将分享多年沉淀的帆软开发套路与 SQL 优化经验,助你快速从"取数工具人"进阶为"数据架构师"。关注我,用报表驱动业务增长!

一、需求描述

1.1 核心功能点

动态构造行与列

分类汇总与小计

数据行过滤

1.2 技术实现建议

后端逻辑 :推荐使用 SQL 的 ROLLUP/ CUBEGROUPING SETS实现高效的分组汇总;若数据结构复杂,可在 C#/Java 中使用 LINQ 或 Stream API 进行内存聚合。
前端渲染:使用 Handsontable、AG Grid 或 帆软(FineReport)的聚合单元格功能,绑定分组数据模型。

二、技术要点

2.1 配置数据库连接

【服务器】 -->【定义数据连接】

2.2 查询参数

【模板】 -->【模板参数】

2.3 模板数据集

【模板】 -->【模板数据集】

2.4 查询参数

【组件设置】-->【全部添加】

三、解决方案

3.1 下拉框数据源(不含参数)

ds_CProcCD

sql 复制代码
select C_PROC_CD,C_PROC_NM from TAX_0007 where C_IS_USING='Y' and C_PROC_CD !='PROC' order by C_PROC_CD;

3.2 下拉框数据源(含参数)

ds_CMachine

sql 复制代码
select C_GROUP_LINE '机台编码',C_MACHINE_NM '机台名称'
from TAX_0009
where C_PLANT_CD='2400'
and C_IS_USING='Y' and C_MACHINE_FORM='1'
and (C_PROC_CD='${母卷工序}' or '${母卷工序}'='')
and (C_WORK_CENTER='${工作中心}' or '${工作中心}'='')
order by C_MACHINE_CD;

3.3 分组行数据源(动态)

ds_group

sql 复制代码
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 '班组'
from TOP_3140 t1
inner join top_3240 t2 on t1.C_OLD_BAR_CODE=t2.C_BAR_CODE
inner join TAX_0009 t4 on t2.C_MACHINE_ID=t4.C_MACHINE_CD
inner join tax_0006 t5 on t5.C_WORK_CENTER =t4.C_WORK_CENTER
where t1.C_CLASSIFY ='1' 
and t1.C_PROC_CD1 in('10004','10044') 
and (case when '${cboMachine}' !='' then  FIND_IN_SET(t4.C_GROUP_LINE, '${cboMachine}') > 0 else '${cboMachine}'='' end)
group by DATE_FORMAT(t1.D_PRO_DATE, '%Y-%m-%d'),t2.C_PROC_CD,t4.C_WORK_CENTER,t4.C_GROUP_LINE,t2.C_CLASS_GROUP
order by DATE_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

sql 复制代码
select
t1.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 '件数'

from TOP_3140 t1
inner join top_3240 t2 on t1.C_OLD_BAR_CODE=t2.C_BAR_CODE
inner join TS_key_value t3 on t3.C_PCODE='lost_type' and t1.C_LOSS_TYPE=t3.C_CODE
inner join TAX_0009 t4 on t2.C_MACHINE_ID=t4.C_MACHINE_CD
where t1.C_CLASSIFY ='1'
and t1.C_PROC_CD1 in('10004','10044')
and t3.C_GROUP like '%10004%'

3.5 下拉框绑定数据源

【控件设置】-->【属性】-->【数据字典】-->【数据集】

3.6 数据区绑定行数据源


3.7 数据区绑定列数据源

横向扩展

按条件过滤 if(len( 损纸类型 ) = 0 , n o f i l t e r , 损纸类型) = 0,nofilter, 损纸类型)=0,nofilter,损纸类型)

3.8 数据区总计字段



四、效果展示

相关推荐
SL-staff11 天前
中小企业 BI 选型:帆软、Power BI、JVS-BI 性价比与架构对比
数据分析·数据可视化·powerbi·帆软·bi工具·部署架构·jvs-bi
不剪发的Tony老师19 天前
ReportServer:一款现代化开源商业智能与报表平台
报表·商业智能
筱璦2 个月前
期货软件开发 - 交易报表
前端·windows·microsoft·报表·期货
云游4 个月前
Jaspersoft Studio community edition 7.0.3的应用
java·报表
小股虫4 个月前
打造跨服务数据的“可信视图”:实验效果报表的架构演进
大数据·分布式·微服务·架构·报表·团队建设
SuperHeroWu74 个月前
【HarmonyOS 6】静态和动态添加应用快捷方式详解
华为·源码·harmonyos·快捷方式·动态·静态·代码添加
davawang5 个月前
BI报表及可视化分析类工具使用经验总结(上)
数据分析·报表·bi
conkl5 个月前
Python中的鸭子类型:理解动态类型的力量
开发语言·python·动态·鸭子类型·动态类型规划