报表工具FineReport排序专题 finereport报表
目录
简单排序…………………………………………………………2
关联排序…………………………………………………………5
交叉表排序………………………………………………………7
多数据集关联排序………………………………………………11
拓展后排序………………………………………………………14
简单排序
实现简单排序有两种方式:直接在sql中排序;使用数据列高级属性中的排序;当然也可以进行自定义排序。
1. 输入sql语句排序
取数时按照某个字段直接进行排序:在sql中直接定义,格式如下:
正序:Select*fromtableorderbycolumn_nameasc
逆序:Select*fromtableorderbycolumn_namedesc
正序效果:
逆序效果:
2. 数据列高级属性中的排序
选中单元格双击后,数据列>高级设置,模板如下:
预览效果,如下:
其后的字段都会根据排序字段进行排列
注:排序字段与前父格必须是一对多的关系,若为一对一关系,设置子格排序将无效,该情况属于根据后格数据进行排序,关联排序,请看关联排序实现方法。
已完成的模板,可参见%FR_HOME%WebReportWEB-INFreportletsdocTutorialSubjectSortingorder.cpt
3. 自定义排序
有时常希望可根据自己的需要,对某一单元格进行排序,并控制每一数据项的位置(记录数比较小,自己能够记得是哪些数据),此时便可通过自定义排序的方式来控制数据顺序。
3.1 示例
下面以简单例子,展示FineReport实现自定义排序的过程。
数据库中,数据顺序:
模板中的设置,如下:
注:公式中输入的就是您想根据什么方式进行排序
效果预览:
已完成的模板,可参见%FR_HOME%WebReportWEB-INFreportletsdocTutorialSubjectSortingdefine.cpt
关联排序
1. 关联排序_数据列
有部分情况,我们希望根据数据表中,某一特定数据列进行排序,可通过关联排序实现。
1.1 示例1
模板设置,如下:
预览效果,如下:
已完成的模板,可参见%FR_HOME%WebReportWEB-INFreportletsdocTutorialSubjectSortingrelative1.cpt
2. 关联排序_公式统计
有部分情况,我们排序所要依据的条件,是需要通过公式计算出来的统计值,此时也可以通过关联排序实现。
2.1 示例2
模板设置,如下:
注:公式不能直接引用单元格名称,必须将各单元格中的内容具体表示出来。
预览效果,如下:
已完成的模板,可参见%FR_HOME%WebReportWEB-INFreportletsdocTutorialSubjectSortingrelative2.cpt。
交叉表排序
1. 问题描述
交叉表也可实现动态排序,如:交叉表左表头,根据选择的列的值进行升序或降序排列。如下图所示:
点击其电视,选择升序,效果如下:
选择降序时,效果如下:
2. 示例
2.1 新建报表
2.2 定义报表数据集
定义报表数据集ds1,SQL语句:SELECT销售员,产品,销量FROMSALES_BASIC
2.3 表样设计
分别拖入各数据列,其表样的设置如下:
如上单元格中的数据列的设置,如下:
单元格
数据集
数据列
属性
A2
ds1
销售员
默认
B1
ds1
产品
从左到右扩展,其余默认
B2
ds1
销量
汇总|求和,其余默认
2.4 参数设置
添加报表参数
添加报表参数product和order,字符串类型,其中product的默认值为电视。用来选择排序的产品名称与升/降序。
动态参数设置
给B1单元格,添加超级链接>动态参数,用来选择该产品的排列顺序。右击超级链接,新增2个动态参数“升序”与“降序”。其中参数product用公式表示,=$$$取当前值,order升序用asc;降序用desc表示,其参数值也用公式=$$$,如下:
注:这里需强调的是,像如上这样的动态排序,其各参数的值是依据其所对应的列名和排序方式的。
2.5 高级设置
双击A2单元格,选择高级的升序公式,如下:
点击其公式旁的输入框按钮,在公式中输入if($order=="asc",sum(ds1.select(销量,产品=$product)),-sum(ds1.select(销量,产品=$product)))
说明:
sum(ds1.select(销量,产品=$product)):表示求出每个销售员$product产品的销量,如$product值为“电视”,则表示每个销售员电视的销量;
根据order的值,判断是升序还是降序。若order值为“asc”,即升序,则按照当前产品的销量进行升序排序。反之,则根据-sum(ds1.select(销量,产品=$product))即销量的相反值,降序排列。
2.6 保存与预览
保存模板。点击分页预览,效果即如上。已完成的模板,可参见%FR_HOME%WebReportWEB-INFreportletsdocTutorialSubjectSortingcrossorder.cpt
多数据集关联排序
1. 概述
排序也可实现多数据集关联排序,即某个字段,按照另一个数据集字段进行排序,以及按照计算结果进行排序。
2. 根据别的数据集排序
2.1 打开模板
打开模板%FR_HOME%WebReportWEB-INFreportletsdocTutorialadvancedMultidatasourceplan.cpt
2.2 超级链接设置
给C2单元格,添加超级链接>动态参数,新增2个动态参数为“升序”与“降序”,order就为参数名,其参数的值,分别为asc(升序),desc(降序)表示。
2.3 高级设置
双击B4单元格,选择高级,排列顺序选择升序,在公式中填入=if($order=='asc',sum(zs.select(数量,ID=$$$)),-sum(zs.select(数量,ID=$$$)))。
注:sum(zs.select(数量,ID=$$$))表示求出当前项目名称中的数量。公式的完整意思是如果order是asc即升序,则按照当前项目名称的数量进行升序排序,反之则按-sum(zs.select(数量,ID=$$$))进行升序。
2.4 保存与预览
保存模板。已完成的模板,可参见%FR_HOME%WebReportWEB-INFreportletsdocTutorialSubjectSortingmultisorting.cpt
分页预览,项目总数(个)这列默认的降序排列,效果如下:
点击项目总数(个)选择升序,效果如下:
可看到项目名称跟着项目总数那列已进行重新排序。
3. 按照计算结果进行排序
3.1 模板制作
和上面的制作步骤是一样的。只要在第二步时,把动态参数设置在D2,并在第三步时,把公式换成:if($order=='asc',sum(cz.select(金额,ID=$$$))+sum(dz.select(金额,ID=$$$))+sum(qt.select(金额,ID=$$$)),-(sum(zs.select(数量,ID=$$$))+sum(dz.select(金额,ID=$$$))+sum(qt.select(金额,ID=$$$))))
注:按照计算结果进行排序,不能对计算的结果列进行设置,只能对每个相加的单元格进行设置,且这些相加的单元格必须是数据列。
已完成的模板,可参见%FR_HOME%WebReportWEB-INFreportletsdocTutorialSubjectSortingaccordingresult.cpt
3.2 保存与预览
保存模板。分页预览,年度投资计划这列默认的降序排列,效果如下:
选择升序排列后,效果如下:
可看到项目名称跟着该列值已进行重新排序。
扩展后排序
1. 问题描述
若模板中的某列要按照另外一个数据集的字段或者多个字段计算后的结果进行排序,此时若在数据列高级面板中设置排序,需要用数据集函数取出对应地数据列进行排序或者还原计算过程,如多数据集关联排序,导致高级排序中的公式非常复杂,有没有什么简单的方法呢?
2. 实现方法
为了解决如上问题,FineReport提供了扩展后排序功能,即对扩展后的结果进行排序。
2.1 设置方法
右击单元格>扩展与父格,在弹出的对话框中对扩展后排序进行设置,如在A1单元格中设置扩展后排序>升序,公式中输入B1,则A1单元格会根据B1单元格的计算结果进行排序。
2.2 产生的问题
由于是对扩展后的数据进行重新排序,只是根据结果改变行的顺序,因此若模板中有通过seq或者&产生的序号时,原本生成的序号会在重新排序时打乱。
解决方案
在序号所在的单元格设置条件属性>新值,使用row()公式,这样在重新排序时会根据当前所在行重新生成序号。
3. 示例
下面我们以扩展后排序来实现多数据集关联排序。效果如下:
默认项目名称根据年度投资计划总额降序排列
选择升序排列后,项目名称根据年度投资计划总额升序排列
3.1 打开模板
打开模板:%FR_HOME%WebReportWEB-INFreportletsdocTutorialadvancedMultidatasourceplan.cpt
3.2 超级链接设置
给年度投资计划(D2单元格),添加超级链接>动态参数,新增2个动态参数为“升序”与“降序”,order就为参数名,其参数值,分别为asc(升序),desc(降序)。
3.3 排序方法设置
右击项目名称所在列(B4单元格),右击>扩展与父格,设置扩展后排序为升序并且公式为:=if($order == 'asc',D4,-D4)。
注:这个公式的意义在于:若order为asc即升序则按照D4进行升序排列,若选择desc即降序则按照-D4升序。
3.4 条件属性设置
原模板中使用了&来产生序号,会发现重新排序后顺序被打乱了,需要使用条件属性重新生成序号。在序号(A4单元格)中增加新值条件属性,选择公式,在公式中输入:=row-3。
3.5 总结
以上便设置好了,预览即可看到上图效果。可以看出,在数据列的高级处进行排序需要进行很复杂的公式进行还原,而用扩展后排序只需要引用对应的单元格即可。
更多阅读
水晶报表教程 水晶报表开发工具
水晶报表教程——简介本文以一个三层结构的ASP.NET程序为例,介绍如何使用crystalreport来制作一份报表的ASP.NET水晶报表教程,其中着重介绍用ASP.NET水晶报表创建图表的技巧。水晶报表教程——方法/步骤水晶报表教程 1、报表是应用程
报表怎么做? 财务报表怎么做
报表怎么做?——简介介绍报表的制作方法,使用工具为比Excel更专业、简洁的报表工具制作。这年头能灵活熟练的使用报表软件已经成为一项基本本领,加油!报表怎么做?——工具/原料报表制作工具:FineReport报表软件免费下载点:h
财务报表大全:资产负债表,损益表,利润表、现金流量表格式下载
加入收藏网站地图网站搜索简 繁 默首页 excel财务会计报表模板 excel精英论坛 财务会计及税务法规 财务管理制度 财会及税务问题解答 财务分析 会计资格及职称考式资料 会计实务 企业所得税专题
主流报表工具图表功能全集 主流报表工具
目前国内的数据展现软件方面,说到最主流的报表工具就不得不提FineReport,本册主要介绍了有关FineReport报表工具的图表相关一些总结。目 录动态图表简介………………………………………………………… 2混合图表简介……………………
决策分析报表教程全攻略 技术分析全攻略
概述报表在展示数据的同时,可以运用仪表盘、趋势图、对比图、三维图等多样化形式展示数据;强大的统计分析函数实现累计、环比、排名等各种业务计算;切片切块多个不同分析维度灵活组合多角度展示数据;高亮不同颜色标识分析不同指标等等,真