【数据可视化】FineReport 帆软报表入门记录帖(未完待续)

此番学finereport帆软可视化,一方面来源于个人理财研究之股票分析可视化看板的需求,另一方面来源于职业转型及精进的需要。前者,作为一颗小韭菜,为了尽快摆脱被割的厄运,也为了尽快有稳定的理财收益率;而后者,则希望尽快从跨行入行打杂的工作现状转型到更有含金量的工作岗位。

本篇博客,聊以记录,也为分享。共勉。—— 起于2020.11.4早晨

参考视频:B站 帆软基础入门教学视频 https://www.bilibili.com/video/BV1NJ411u7A3?from=search&seid=4624977545438302894

----------------------------------------------

 

目录

一、实操过程记录

1.1 扩展和父子格

1.2 行式报表

1.3 分组报表

1.4 交叉报表

1.5 自由报表

2.1 简单多源报表

2.2 主子报表

2.2.1 决策式主子表

2.2.2 嵌入式主子表

2.3 动态间隔运算

2.3.1 动态间隔运算1

2.3.2 动态间隔运算2

2.4 报表应用_条件属性

2.5 报表应用_超级链接

2.5.1 B站视频实操过程及效果

2.5.2 官方文档实操过程及疑难杂症(设计器简介_操作指南_单元格_超级链接)

2.5.3 官方文档实操过程及疑难杂症(报表应用_报表特性_超级链接_基础设置)

3.1 参数入门

3.1.1 参数入门_参数入门

3.1.2 参数入门_数据集参数

二、后记


一、实操过程记录

1.1 扩展和父子格

较简单,略。或直接观看视频:https://www.bilibili.com/video/BV1NJ411u7A3?p=2

 

1.2 行式报表

 

1.3 分组报表

 

1.4 交叉报表

 

1.5 自由报表

 

2.1 简单多源报表

2.2 主子报表

2.2.1 决策式主子表

决策式主子表,出师不利,一给楼下新增那一波添加左父格到原来交叉报表《订单统计表》中的订单号B3或者客户编号B4,都报了个错,提示“数据量过大触发保护机制”。

双击B10订单明细,弹框里“过滤”条件增加如图,即可大幅度缩小单元格显示量,不超过“智能运维-内存管理-模板限制”中的限制量(初始默认是30万,我调到了300万),问题得以解决。

增加过滤条件,问题解决后,正常显示如下:

附个图(“智能运维-内存管理”)感受下内存的消耗:

 

分页显示

关键词:“行后分页”,即可分行显示。

 

2.2.2 嵌入式主子表

最终成效:

其中,子表1,来源于“雇员”表:

子表2,来源于“订单”表:

2.3 动态间隔运算

2.3.1 动态间隔运算1

视频里没提到数据源,然后我在帆软的官方文档里找到了数据源路径。。。其实就是<订单>表,获取数据源时把【订购日期】转换成“月份”显示,使用函数STRFTIME()。

本节B站视频链接:https://www.bilibili.com/video/BV1NJ411u7A3?p=9

本节在帆软官方文档的路径:https://help.fanruan.com/finereport/doc-view-338.html

SELECT STRFTIME('%m',订购日期) AS 月份,应付金额 

FROM 订单 

WHERE STRFTIME('%Y',订购日期)='2011'

成效效果如下:

“比较”、“占比”、“环比”的说明:

单元格操作
A1~E1单元格依次写入字段标题名:月份,应付金额,比较,占比,环比。选中 A1~E1 单元格,设置标题预定义样式为Head类型
A2数据集中的数据列「月份」拖入到单元格中
B2数据集中的数据列「应付金额」拖入到单元格中,并在单元格元素>数据设置中对单元格数据进行汇总>求和
C2(比较)写入公式B2 - B2[A2:1],计算 B2 单元格扩展出来的数据,每一行与第一行的差值
D2(占比)写入公式B2 / SUM(B2[!0]),计算 B2 单元格扩展出来的数据,每一行在总值中的占比
E2(环比)写入公式IF(&A2 > 1, B2 / B2[A2:-1], 0),计算 B2 单元格扩展出来的数据,每一行与上一行的比率

2.3.2 动态间隔运算2

报表设计:(摘自 官方文档 https://help.fanruan.com/finereport/doc-view-338.html

单元格操作
A1~E1单元格依次写入字段标题名:年份,月份,应付金额,逐层累计,跨层累计。选中 A1~E1 单元格,设置标题预定义样式为Head类型
A2数据集中的数据列「年份」拖入到单元格中
B2数据集中的数据列「月份」拖入到单元格中
C2数据集中的数据列「应付金额」拖入到单元格中,并在单元格元素>数据设置中对单元格数据进行汇总>求和
D2写入公式C2 + D2[B2:-1],C2 单元格扩展出来的数据按年份逐行累计
E2写入公式IF(&B2 > 1, C2 + E2[B2:-1], C2 + E2[A2:-1,B2:!-1]),C2 单元格扩展出来的数据逐行累计,跨年份时接着上一年份的累计结果继续累计,其中B2:!-1表示是找该组B2列的倒数第1行,如果是B2:!-2就是倒数第2行
A3~C3合并 A3~C3 单元格,写入字段标题名:应付金额大于2500的月份个数。设置左父格为 A2,标题预定义样式为Head类型
D3~E3合并 D3~E3 单元格,写入公式COUNT(C2[!0]{A2=$A2 && C2>2500}),统计应付金额大于2500的月份个数

最终效果如下图:(参照视频实操得出)

2.4 报表应用_条件属性

(1)主要涉及:

① 隔行显示背景色:“添加条件”-“背景”

② 预警效果:“添加条件”-“颜色”

③ 当运货商是“1”的时候,想让ta显示成“运货商一”:“添加条件”-“新值”

(2)最终效果如图:

2.5 报表应用_超级链接

2.5.1 B站视频实操过程及效果

SELECT * FROM 销量 where 地区 = '${地区}'  ——单引号

or

SELECT * FROM 销量 where 地区 = "${地区}" ——双引号(待区分单引号和双引号区别)

=====链接是能链过去新报表了,只是链接前的界面跟B站视频的不太一样(自己实操的只能选“华北”,不能选“华东”,可能跟后面章节提到的“参数设置”有关)。晚点回来跟着官方文档撸一遍。

=====先看看我的实操成效:

<超级链接>官方文档参考:

设计器简介_操作指南_单元格_超级链接 https://help.fanruan.com/finereport/doc-view-223.html

报表应用_报表特性_超级链接_基础设置 https://help.fanruan.com/finereport/doc-view-907.html —— B站视频提供的官方地址。

----------------------

2.5.2 官方文档实操过程及疑难杂症(设计器简介_操作指南_单元格_超级链接)

2.5.2.1 主要内容

现在是跟住官方文档(不是B站视频)撸的过程,主要涉及:

① 日期排序

部分实操参考:打开订单信息表,修改订单信息表数据集 ds1 的 SQL 查询语句为SELECT * FROM 订单 ORDER BY ${a} ${b},给数据集参数a设置默认值「订购日期」,给数据集参数b设置默认值「ASC」(升序排序)。后面略。

② 链接报表
部分实操参考:打开订单明细表,修改订单明细表数据集 ds1 的 SQL 查询语句为SELECT * FROM 订单明细 WHERE 订单ID=${订单号},设置参数订单号的默认值为「10248」。

③报表导出Excel
部分实操参考:打开订单信息表,选中 F4 单元格,右边属性面板选择超级链接>添加链接>JavaScript脚本。新建一个 JavaScript 脚本类型的超级链接,将它重命名为「导出订单明细」,点击编辑按钮,进入JavaScript 脚本设置界面。点击,新建一个脚本参数ID,值为「A4」,在下方脚本代码编辑框中,输入JavaScript 脚本代码:

window.open(FR.cjkEncode("${servletURL}?reportlet=/订单明细表.cpt&订单号=" + ID + "&format=excel"));

注:确保「订单明细表.cpt」是保存在%FR_HOME%\webroot\WEB-INF\reportlets路径下的,如果您报表的保存路径不同,需要对JavaScript 脚本中的报表路径做修改。

2.5.2.2 问题解决

【问题一】“报表导出Excel”这里遇到个问题,就是“报表平台中报没有找到模板文件”。

原因及解决方案:由于我在官方默认路径下新建了一个文件夹“prac”并把练习文件放在了prac这个目录下,所以我的“订单明细表”实际路径应为\reportlets\prac 而不是\reportlets(另外我新建的cpt文件名是“引用_订单明细表”而不是官方文档的“订单明细表”,所以顺便一起改),把Javascript脚本改成

window.open(FR.cjkEncode("${servletURL}?reportlet=/prac/引用_订单明细表.cpt&订单号=" + ID + "&format=excel"));

就可以了。

【问题二】还是“报表导出Excel”这里,报错“错误代码:11300001 数据集配置错误”。

完整报错如下:Query:<br>错误代码:11300001 数据集配置错误<br>java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such column: A4)

报错说是没有A4这一列。而由上图【问题一】可见,A4列是订单号。那我们要回去看看这列引用为什么出错。

从某官方文档(https://help.fanruan.com/finereport/doc-view-223.html) 的评论中,我们发现一些蛛丝马迹:可能是A4参数配置时选了“公式”类型(还是不选“公式”类型?)。

那我们去看看A4的参数设置,调整测试一下。重新设置参数ID=A4:选择“公式”类型后,在弹框中输入“=A4”。保存ctp文件,刷新预览界面,重新尝试导出,成功。

附 预览页面如下:

附 点击“导出明细“列的”导出”按钮后,成功导出的报表如下:

至此,设计器简介_操作指南_单元格_超级链接 https://help.fanruan.com/finereport/doc-view-223.html,实操结束。

2.5.3 官方文档实操过程及疑难杂症(报表应用_报表特性_超级链接_基础设置)

2.5.3.1 <超级链接到报表及填报表设置>https://help.fanruan.com/finereport/index.php?doc-view-919.html

按照 <超级链接到报表及填报表设置-2. 超级链接到填报表等其他模式(如填报预览)>,

个人实操:

网络报表地址增加输入&op=write,在原来的“分页预览”基础上多了几个按钮:“添加记录”、“数据校验”、“提交”。

点“添加记录”,点一次就在产品ID为“17”的那行下面新增一行空行,点两次就新增两行空行,但是空行内无法编辑。所以,这个填报预览,不知道算不算成功,先放着吧。也许是预览模式无法填报,等到部署应用时才能填报。

当我将“&op=write”改成“$op=write”后,再预览子链接,就弹出了以下提示:“看到此页面,说明您已经成功部署了报表服务器”。不明所以。

点击进入“FS用户”后,界面是帆软的“数据决策系统”(如下图),贴出来供读者混个脸熟。(不是打广告。。。)

2.5.3.2 <超级链接打开位置>https://help.fanruan.com/finereport/doc-view-917.html

继续实操下一个:<超级链接打开位置>https://help.fanruan.com/finereport/doc-view-917.html,这次发现人家模板里的子报表“添加记录”后,双击空行是可以编辑提交的(如下图)。

 

3.1 参数入门

官方指引文档https://help.fanruan.com/finereport/doc-view-155.html

B站视频链接 https://www.bilibili.com/video/BV1NJ411u7A3?p=13

3.1.1 参数入门_参数入门

实操成功效果如下:

 

3.1.2 参数入门_数据集参数

3.1.2.1 简单应用

可以在新建数据集,定义 SQL 查询语句时,直接使用 where 条件过滤出所需数据,从而大大缩短报表取数时间,类似下面的 SQL 语句:

SELECT * FROM 销量 where 地区 = '${地区}'

3.1.2.2 带公式的应用

数据集 SQL 查询语句中可以使用参数宏${}动态地生成过滤条件,${}中的语句在 FineReport 报表中执行,将${}的执行结果与 SQL 语句拼接起来形成最终的查询语句,传递给数据库执行,可以使用多个${},如下 SQL 查询语句:

SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}

${}中可以使用 FineReport 所有内置的公式,如 if 函数;

${}中除了 FineReport 内置的函数名、常量外,其他变量就是数据集参数。

如上 SQL 语句,if 函数是 FineReport 内置的公式,变量 area 就是数据集参数,如果len(area)!=0,即 area 参数不为空,比如说 area 的值为「华东」,那么 if 语句的执行结果为and 货主地区='华东',然后再把这句话拼接到 SQL 语句当中,SQL 语句就变成:

SELECT * FROM 订单 where 1=1 and 货主地区='华东'

 

 

-----------------------------------------------

二、后记

补充记录:

关于数据源导入,在学习伊始遇到较大阻碍。

第一个坎是数据库连接不上。找了同事帮忙看,原来是localhost后面应为“:”而不是“//”.

第二个坎是,之前连接上的数据库,再次打开查询表格时提示“严重:19:11:14 SwingWorker-pool-9-thread-4 ERROR [standard] 错误代码:11300001 数据集配置错误”。后面发现是因为我本地php的MySQL在电脑重启后没有去启动MySQL数据库,这样自然没法被连接上。

关于数据源导入/连接,其实通过某个措施,可以避免以上两个问题,就是,直接使用finereport自带的数据库数据FRDemo(参考链接:晚点再补,或者搜索“如何连接finerport帆软自带的数据库”)。

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Smart-Report报表工具支持常规的BI应用——报表制作(报表、图形),分析与信息发布; 提供强大的开发环境和易于维护的报表; 掌握该工具门槛比较低,通过简单培训就能掌握; 数据安全性的统一控制; 通过开放的API接口与其它业务系统的方便集成。 1、系统所需环境 操作系统:WINDOWS(2000、XP、WINDOWS7) 数据库:MYSQL5.0 WEB服务器:TOMCAT5.5 客户端浏览器:IE6.0及以上版本 由于是基于JAVA的B/S系统,因此是夸平台的,上面列举的环境需求,只是为了接下来更好的介绍本软件。 本软件支持的大部分关系型数据库,如:DB2、ORACLE、SQL SERVER等。WEB服务器支持:TOMCAT、WEBSPHERE、WEBLOGIC等。 2、安装前的准备 在SmartReport部署前,需要有数据库环境及WEB服务器,因此需要安装数据库及WEB服务器。 (1)安装MYSQL5.0数据库 以WINDOWS为例,网上下载MYSQL数据库,然后根据安装向导一步步安装即可完成TOMCAT的安装。 (2)安装MYSQL客户端 为了方便的管理、查看MYSQL,用户可以选择安装MYSQL客户端,如:MySQL-Front (3)安装TOMCAT5.5.27 以安装TOMCAT5.5为例,用户可以下载免安装版本的TOMCAT,解压缩即能使用,前提是需要在环境变量里配置TOMCAT_HOME、JAVA_HOME等信息。运行TOMCAT_HOME/bin下的startup.bat文件,启动TOMCAT,待启动完后,在IE里输入:http://localhost:8080/,如看到下面页面则表示TOMCAT安装成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值