fineRePort帆软报表心得 和 功能点开发

需求:给公司的核心Boss系统做各种报表

困难:fineRePort软件熟悉的还凑合,难点在于java做的boss系统web界面和业务逻辑不熟悉,数据库的表和字段一概不知

熟悉数据库的思路:这次没有想几百张表怎么熟悉,或划模块熟悉。

 

而是直接参考同事以前做的报表,看他写的sql,并结合数据库文档,不断的改不断的试

看sql的难点在于,我们这报表一般的都要连十几张表,里面还各种if、case when、函数、关键字...等,一条sql写100多行,看着真心晕,真心懵逼啊。

1、先打开他那报表,试着跑起来,发现查不出来数据

2、选择查询条件,还是查不出来。这时候就只能看他那sql是咋写的了

看sql的思路(如下图,顺序无所谓,总共就3步):

1、先摒弃case等 多余的东西,只找出要查的字段

2、然后找出所有连表,并 分出来哪一张是主表,其他都是从表。

找外键关系,看他表的关系(通过sql的连表 + on的条件,对应真实表看)

3、根据查询条件分析使用,看他最后一个连表,后面跟的where条件

结果发现是没有授权,但是这思路我觉得对我还是有帮助的

解决:同事提点,给出了要操作哪5张表

fineRePort帆软报表心得 和 功能点开发_第1张图片

 

我想出来了一个 在上千张表的库中,快速筛选有用数据表的方法 

思路:只要数据不是今天或本月(不是热门表)就筛掉,换下一张表看

sql:select 添加时间 from 每个表 order by 添加时间 desc limit 100

 

 

  • $$$是当前行
  • 父子格的默认过滤关系,相当于拿父格进行分组 查询
  • 在公式中&B10 给b10列自动生成编号
  • x轴是分类,Y轴是系列
  • 单元格图表和悬浮图表的不同处:单元格图表是要先合并出一个图表大小的位置,悬浮的不用合并(悬浮,不基于单元格大小而显示)
  • 在局域网中,如何让同事看见你的报表:给url上的localhost换成本机ip就可以了

 

4、鼠标跟随效果怎么做:模板-》模板web属性-》分页预览设置-》加载结束-》点铅笔(编辑)

var background_color = "rgb(255,0,0)"; //新背景色  
var frozen_back_color = new Array();  
var back_color = new Array();  
var $last_tr;  
var i = 1;  
// 首行除外  
$('.x-table tr:gt(1)').bind("mouseenter", function () {    
//$(".x-table tr")  
        if (typeof($last_tr) != "undefined") {  
                if (typeof($(this).attr("id")) != "undefined") {  
                        if (typeof($("#content-container #frozen-west").attr("id")) != "undefined") {  
                                $("#content-container #" + $last_tr.attr("id")).each(function () {  
                                        $(this).children("td").each(function () {  
                                                $(this).css("background-color", frozen_back_color[$(this).index()]);  
                                        });  
                                        i = i + 1;  
                                });  
                                i = 1;  
                        } else {  
                                $last_tr.children("td").each(function () {  
                                       $(this).css("background-color", back_color[$(this).index()]);  
                                });  
                        }  
                        frozen_back_color = [];  
                        back_color = [];  
                }  
        }  
        if (typeof($(this).attr("id")) != "undefined") {  
                if (typeof($("#content-container #frozen-west").attr("id")) != "undefined") {  
                        $("#content-container #" + $(this).attr("id")).each(function () {  
                                frozen_back_color = new Array();  
                                $(this).children("td").each(function () {  
                                        frozen_back_color[$(this).index()] = $(this).css("background-color");  
                                        $(this).css("background-color", background_color);  
                                });  
                                i = i + 1;  
                        });  
                        i = 1;  
                } else {  
                        $(this).children("td").each(function () {  
                                back_color[$(this).index()] = $(this).css("background-color");  
  
                                  
                                $(this).css("background-color", background_color);  
                        });  
                }  
        }  
});  
//首行除外  
$('.x-table tr:gt(1)') .bind("mouseleave", function () {  
        if (typeof($(this).attr("id")) != "undefined") {  
                $last_tr = $(this);  
        }  
});


5、报表字段的宽如何修改?
    字段少 用   自适应
    字段多 不用 自适应

fineRePort帆软报表心得 和 功能点开发_第2张图片

 

 

打印sql语句:

如果查询时间短

怎么才能看到sql呢??

左上角,文件-》选项-》高级-》log级别设置-》改成debug即可

fineRePort帆软报表心得 和 功能点开发_第3张图片

 

 

颜色标志相关:

左上角红色     是 条件属性

左上角绿色     是 右侧-》单元格属性-》形态-》数据字典

右上角绿色    是 右侧-》单元格属性-》其他-》分页(行前分页)

左下角黄色     是 过滤条件

蓝色字带下划线 是 超链接

蓝色箭头    是 父格

 

重要的参考文档:

 

fineRePort帆软报表心得 和 功能点开发_第4张图片

fineRePort帆软报表心得 和 功能点开发_第5张图片

sql上加limit

fineRePort帆软报表心得 和 功能点开发_第6张图片

单元格的绝对定位(写在公式中,语法是 []):

1、普通定位

思路:先看[]里,在看[]外

示例:=A1[A1:3]//这3是取A1扩展后的A3单元格的值(下面这4个特殊的值。是放到:3这个位置上的

1 //第1个值

-1 //上一个值

!0//所有的值

!-1//最后一个值

 

2、带条件定位

[]后面跟{条件写这里}    //带条件

示例:=A1[!0]{A1!=3}    //取A1单元格扩展出的值,输出 !=3的

 

3、特殊定位

$ //绝对定位时,不写才能取,取当前的值

& //每个

 

多源报表:

简单多源报表:连表查询。添加过滤条件时,选单元格

复杂多源报表:连库查询(使用的是内置数据集)

多源分片报表:最复杂的。多源就是一张报表的数据来源来自多个数据表,甚至是多个物理数据库。这里的“多个常常不是两个三个,而是七八个乃至十几个,无法转成单源;

分片是指一张报表的纵向或横向或双向同时被分成了多个区域,往往每个区域来自不同的数据源;【蒙了,没学会】

分组报表:

按段分组:选中单元格-》分组-》高级-》自定义,设置分组条件(就和使用if写 && 条件一样)

归并分组:选中单元格-》分组-》高级-》自定义,设置分组条件(就和使用if写 || 条件一样)

自定义公式分组:【没学会】

 

常用小技巧

 

连接本地数据库

fineRePort帆软报表心得 和 功能点开发_第7张图片

fineRePort帆软报表心得 和 功能点开发_第8张图片

动态隔间运算

主要参考的文档:

fineRePort帆软报表心得 和 功能点开发_第9张图片

fineRePort帆软报表心得 和 功能点开发_第10张图片

概念:

fineRePort帆软报表心得 和 功能点开发_第11张图片

使用方法总结:

单元格的绝对定位(写在公式中,语法是 [])

1、普通定位

思路:先看[]里,在看[]外

示例:=A1[A1:3] //这3是取A1扩展后的A3单元格的值(下面这4个特殊的值。是放到:3这个位置上的

1 //第1个值

-1 //上一个值

!0//所有的值

!-1//最后一个值

 fineRePort帆软报表心得 和 功能点开发_第12张图片

2、带条件定位

[]后面跟{条件写这里}   //带条件

示例:=A1[!0]{A1!=3}    //取A1单元格扩展出的值,输出 !=3的

 fineRePort帆软报表心得 和 功能点开发_第13张图片

3、特殊定位

$ //绝对定位时,不写才能取,取当前的值

& //每个

fineRePort帆软报表心得 和 功能点开发_第14张图片

单元格计算:

比较:当前月 减 1月份,的值(数字)

占比:当前月 / 所有月份的和(百分比)

环比:当前月 / 上一个月的值(百分比)

逐层累计:同一年中,每月的和,都加之前的和

跨层累计:2年中,18年的1月份+17年的整年和(比逐层多个判断,如果>1月份就要加上一年的和,用逐层累计的公式。否则)

fineRePort帆软报表心得 和 功能点开发_第15张图片

条件属性

fineRePort帆软报表心得 和 功能点开发_第16张图片

下图是,勾上复选框后,深绿色的地方隐藏

fineRePort帆软报表心得 和 功能点开发_第17张图片

行式报表-隔行换色:

在id那列,通过设置表达式 row()%2==0

宽度不够,想出现滚轴:

fineRePort帆软报表心得 和 功能点开发_第18张图片

打印参数

fineRePort帆软报表心得 和 功能点开发_第19张图片

fineRePort帆软报表心得 和 功能点开发_第20张图片

 

数据字典的使用方法

fineRePort帆软报表心得 和 功能点开发_第21张图片

多源报表

多源报表:多源指的是多个数据源。就是多张表中取数据。

注意:连表,它不会自己判断搜索条件,需要手动设置on 谁等于谁

先选中b表的字段(看右侧单元格元素)-》过滤条件(点编辑)-》选单元格(输入和哪个单元格关联)-》先添加,在确定

fineRePort帆软报表心得 和 功能点开发_第22张图片

fineRePort帆软报表心得 和 功能点开发_第23张图片

 

主子报表

fineRePort帆软报表心得 和 功能点开发_第24张图片

fineRePort帆软报表心得 和 功能点开发_第25张图片

fineRePort帆软报表心得 和 功能点开发_第26张图片

fineRePort帆软报表心得 和 功能点开发_第27张图片

fineRePort帆软报表心得 和 功能点开发_第28张图片

 

fineRePort帆软报表心得 和 功能点开发_第29张图片

超级链接

思路:点击模板1的xx,跳转到一个新网页(模板2)

模板2数据集的,where条件使用参数(变量)代替

fineRePort帆软报表心得 和 功能点开发_第30张图片

 

模板1的超级链接中

fineRePort帆软报表心得 和 功能点开发_第31张图片

 

 

 

参数

参数总结:在大数据量时使用,数据集参数;数据量不大,使用模板参数;

 

参数分2种:

1、数据集参数,就是在sql中直接写

先在sql中定义参数,语法 ${参数名}

fineRePort帆软报表心得 和 功能点开发_第32张图片

fineRePort帆软报表心得 和 功能点开发_第33张图片

2、模板参数,菜单-》模板-》模板参数中定义

fineRePort帆软报表心得 和 功能点开发_第34张图片

 

只比数据集多了下面这一步,联合过滤使用(sql的where用的是这可选列,and or是你添加多个条件时...)

fineRePort帆软报表心得 和 功能点开发_第35张图片

 

 

 

传参方式(都是操作模板参数):

1、模板参数-》添加到参数面板中-》传给单元格过滤用

2、Url参数-》定义模板参数-》在url后面加参数-》在单元格中使用(公式-》$调用参数名)就能接收到

fineRePort帆软报表心得 和 功能点开发_第36张图片

url参数在sql中直接使用的语法: '${url上的参数名}'

 

公式的2种传参方式:

1、传模板参数:$参数名 //直接放到公式中(如上图)

2、传模板参数:$参数名 //在公式中,将模板参数,当函数参数用

fineRePort帆软报表心得 和 功能点开发_第37张图片

 

 

参数为空选择全部

思路:参数为空不过滤

1、数据集参数(在sql上处理)看demo(11-1)

SELECT * FROM 销量 where 1=1 ${if(len(area)==0,"","and 地区='"+area+"'")}

fineRePort帆软报表心得 和 功能点开发_第38张图片

 

2、模板参数。看demo(11-2)

if(len($a)==0,nofilter,$a)

fineRePort帆软报表心得 和 功能点开发_第39张图片

 

填报相关

总思路:填报是对数据库进行【改删】

1、设计报表(和平常一样。数据集-》字段拖过来-》加样式)

2、添加填报控件(相当于html的,各种不同type的input框)

3、设置填报属性。菜单-》模板-》报表填报属性(设置主键。表格字段和数据库表字段的对应关系等)

4、填报预览(进行修改测试)

fineRePort帆软报表心得 和 功能点开发_第40张图片

 

多sheet填报

fineRePort帆软报表心得 和 功能点开发_第41张图片

多个sheet修改,提交时,是全部提交

图表

 

单元格-》图表

概念:x轴是分类,Y轴是系列

1、先合并单元格(用于放图表)

2、插入图表(菜单-》插入-》单元格元素-》插入图表)

3、定义图表的数据

fineRePort帆软报表心得 和 功能点开发_第42张图片

 

 

悬浮-》图表

fineRePort帆软报表心得 和 功能点开发_第43张图片

 

 

填报设计的-》图表

饼图的特殊点

fineRePort帆软报表心得 和 功能点开发_第44张图片

 

 

 

部署发布(上线)

fineRePort帆软报表心得 和 功能点开发_第45张图片

 

嵌入式部署:是有选择的复制文件夹,不是整个项目全复制过去

fineRePort帆软报表心得 和 功能点开发_第46张图片

 

插件的安装和使用

fineRePort帆软报表心得 和 功能点开发_第47张图片

 

使用时:只有决策报表才能使用插件

fineRePort帆软报表心得 和 功能点开发_第48张图片

fineRePort帆软报表心得 和 功能点开发_第49张图片

fineRePort帆软报表心得 和 功能点开发_第50张图片

多选控件:

如果带上这俩,会报sql语句错误,具体咋错了我也不知道,运行时的sql语句看不到

fineRePort帆软报表心得 和 功能点开发_第51张图片

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(大数据)