帆软官方入门教程
链接: 【官方教程】FineReport 10.0基础入门视频_哔哩哔哩_bilibili
这个教程讲的太笼统,不建议看,可以看另外一个教程,链接如下:
笔记如下:
第一章 初识FineReport【产品简介】
企业传统报表应用三大难题
针对以上问题,Finereport提供的解决方案
finereport的产品特点
finereport的产品结构
数据层是数据采集层,应用层对采集到的数据做逻辑上的处理,展示层对处理后的数据做展示。
上图中,报表设计器用来进行数据准备(定义数据源)和报表的制作,制作完成后需要上川到服务器端,因为finereport是一个serverlet应用,需要部署到服务器端才能被用户通过浏览器访问到。
产品功能如下:
第二章 设计器页面概览
第三章:普通报表设计流程图
上图中前三步属于数据准备过程
1、新建数据连接
这里使用内置数据库,打开设计器-->服务器-->定义数据连接-->FRDemo-->测试连接
如果想连接其它外置数据库,点击上图中“定义数据连接”下方的加号,选择jdbc,结果如下图:
数据库选择想要的外置数据库,驱动器会根据自己选择的数据库自动变化成对应的驱动器,
URL填写数据库所在主机名和对应的数据库名字,
上图中的URL就是本机的1433端口的FRTest数据库,用户名和密码填写对应的就好。
2、新建报表类型
2.1 新建普通报表的方法
一是在预览图标旁边的图标
二是文件-->新建普通报表
3、新建数据集(通过sql查询从数据表中取数,将其和后续报表需要的数据进行绑定)
先定义模板数据集,从内置的数据库中数据表取数据,如下:
选择“模板数据集”-->选择旁边的+号,从选项中选择数据库查询,如下:
选择内置的数据库FRDemo后会显示该数据库下的所有数据表,在上图中黄色区域写SQL,如“select *from 销量”可以得到销量表下的数据。具体是写完sql后,选择旁边的预览,结果如下。
点击两个确定后,如下图:
下面再从该表查另一个数据, select 销售员,sum(销量) as 总销售量 from 销量 group by 销售员
现在就有两个查询结果了,如下:
报表展示效果
在该教程的第四个视频中有大体上介绍这些东西,只是简单粗略的介绍,初学者也只是跟着复现出报表结果。
------------------------------------------------分割线-------------------------------------------------
下面对上面的分地区显示不同销售员销售量的报表进行详细分解。
先回顾一下上面报表的开发流程:
(1)定义数据源,通过SQL语句从指定数据库的数据表中获取想要的数据,查询结果包含多个数据列,每列包含很多数据,将数据列拖拽到报表中的单元格时,如果不进行扩展,那么所有数据都有展示在一个单元格中。
如果扩展,数据列中的数据就展示在多个单元格中。
单元格扩展:要进行扩展,否则就挤在一起了
单元格扩展分为两种:横向和纵向
只包含横向扩展的报表称为行式报表,同时有横向扩展和纵向扩展的报表称为交叉报表。
单元格扩展练习
新建模板数据集-->数据库查询-->选择内置数据库FRDemo,写SQL,查询订单表的信息,如下。
创建报表,选择展示的字段,把模板数据集中的数据列拖拽到对应的位置,因为每个数据列包含多个数据,所以需要扩展,借此机会练习。将数据列拖拽到报表后,默认采用的就是纵向扩展。
展示结果如下:
问题:日期格式过长,运费小数点过多,可以对这些单元格进行样式设置。
选中报表中的订单日期单元格,可以在样式中选择显示样式,可以选择日期和数字(以及小数保留几位小数)
结果如下:
父子格相关
概念:子单元格设置父单元格后,子单元跟随父单元进行单元格扩展。简单地说,子单元格根据父单元格分组显示。
这次以最开始的销量表为例,只显示地区、销售员、销量等数据列,销量是求销售员的总销售量,所以需要对该单元格进行处理,如下:
下面就是父子格设置,销售员数据列依赖地区数据列,而销量数据列则依赖销售员数据列,所以地区是销售员的左父格,销售员是销量的左父格。
选中销售员数据列,设置单元格属性,如下,左父格应该设置成A2,但默认的设置就是单元格左边的单元为其左父格,所以采用默认设置就好。
结果如下:
下面演示自由报表,创建如表所示的报表,日期类型的单元格改成日期格式,金额改成数字类型,保留两位小数。设置左父格:表头“订单统计表”的左父格设置为B3,因为其它数据都是依赖订单标号的,其它数据也是如此。
显示效果如下:
层次坐标
概念:扩展单元格运算时需要使用层次坐标来表示单元格扩展后的表格位置。
在A1单元格创建1-5的数字并纵向扩展,但在B1单元格里想往下顺移一位,这就用到了 相对层次坐标 。
另外就是 绝对层次坐标
上图中对B1设置完取数公式后,记得 把左父格设置为“无”。
层次坐标常用公式
Cellx[!0]展示:
实际效果:
Cellx[!0][条件表达式]:不是取出某个单元格的所有值,而是根据条件过滤得到。
上面的图中B1公式改成如下格式:
那么实际效果就是:
&Cellx用于获取单元格每个值扩展后的位置。
效果:
$Cellx获取单元格的值
效果:
动态格间运算
概念:使用层次坐标进行跨行运算、跨组运算、集合运算等等。
先拉取数据源,
select strftime("%m",订购日期) as 月份,应付金额 from 订单 where strftime("%Y",订购日期)="2011"
效果:
使用动态格间运算计算另一个指标
这一部分有问题,后续再说
主子报表
效果:
超级链接
概念︰单元格设置超级链接指向另一个目标,报表预览时,点击单元格即跳向指定的目标或实现某种效果。这个目标可以是另一张报表,一个网页,一张图片,一个电子邮件地址,一个文件甚至是一个应用程序等等。