快逸报表V4.0入门教程_第1页
快逸报表V4.0入门教程_第2页
快逸报表V4.0入门教程_第3页
快逸报表V4.0入门教程_第4页
快逸报表V4.0入门教程_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

快逸报表V4.0入门教程目录TOC\o"1-2"\h\z\u第1章 序言 4第2章 设计器的安装 52.1 安装 52.2 运行报表设计器 72.3 数据库连接 8第3章 入门 113.1 制作一张报表包括哪几个步骤? 113.2 一张最简单的报表 113.3 将报表发布到web上 14第4章 网格式报表 154.1 网格式报表,体会扩展 154.2 显示格式、显示值 204.3 报表区域 264.4 设置预警条件 314.5 增加动态背景色 334.6 取数排序 34第5章 参数 375.1 参数的概念 375.2 参数的使用 375.3 参数模板设计 415.4 将报表和参数模板结合起来发布 43第6章 行式报表 456.1 行式报表的概念 456.2 把网格报表变成行式报表 48第7章 分组报表 517.1 分组报表,体验主子格概念 517.2 多层分组 567.3 汇总统计 597.4 计算列的汇总 667.5 统计图,初步了解统计图的使用 687.6 跟随扩展的统计图 70第8章 交叉报表 738.1 交叉报表,体会横向扩展 738.2 多层交叉,深入了解扩展 778.3 汇总统计,深入了解汇总规则 808.4 统计图,与交叉报表的结合 828.5 跟随扩展的统计图 84第9章 自由报表 879.1 自由格式的报表,深入了解主格概念 879.2 图片字段 89第10章 主子表 9210.1 单表式主子报表 9210.2 嵌入式主子报表 9510.3 引入式主子报表 98第11章 打印 10511.1 打印设置 10511.2 分页 11011.3 分栏 12411.4 套打 126第12章 宏 13012.1 宏的概念 13012.2 实例 13012.3 参数与宏的区别,在web上如何使用宏 133序言报表,是很多应用系统中很重要的一个组成部分。快逸报表,是优秀的Web报表工具。快逸报表是用于报表制作的报表软件,使用者可以通过报表设计器设计各种复杂格式的报表,通过报表服务器在浏览器端生成纯HTML网页报表,并能无缝导出成Excel、PDF和WORD文件;支持二维/三维饼图、柱图、折线图、雷达图、甘特图等二十五种统计图,且无须在浏览器端安装任何控件。独有的APPLET打印控件,所见即所得的实现了套打、分栏等各种报表的精确打印。快逸报表采用JAVA开发,由两个部分构成:报表设计器和报表服务器。快逸报表是一个很容易掌握的报表工具,它部署起来很简单,应用起来很方便,而且其设计工具与Excel比较相似,很容易上手。为了帮助读者快速掌握快逸报表,我们编写了这份《快逸报表4.0入门教程》,在教程中,将避免复杂的概念,通过由浅入深的实例,深入浅出的讲解,辅以有针对性的练习题,一步一步帮助读者迅速掌握快逸报表的基本操作和概念。只要你照着本教程去做,半天就可以初步掌握快逸报表。希望在轻轻松松的过程中,你能很快地掌握报表设计!设计器的安装安装直接运行安装包中的快逸报表设计器安装包目录下的quiee-V4.0-Free-install.exe请您点“下一步”继续。如果您同意“快逸的许可协议”,请您点击“我同意”每个选项上都有对应的说明,把鼠标移动该选项上可查看相应的描述。快逸设计器的安装目录,默认路径:C:\ProgramFiles\quieeReport,我们也可以修改路径,安装到我们指定的位置。JDK的版本可以选择默认的,也可以用我们机器中现有的。选择完毕后点“安装”点“完成”可完成报表安装运行报表设计器安装完快逸报表之后打开设计器的方式有三种方法:方法一:在安装目录(C:\ProgramFiles\reportHome\bin)寻找startup.bat的程序文件,双击运行即可;方法二:从程序组中选择:开始->程序->快逸报表->快逸设计器方法三,安装完快逸报表之后,在桌面上会出现快逸报表设计器的快捷方式,双击即可。快逸报表设计器的主界面,如下图所示:数据库连接步骤1:点击菜单“配置”->“数据源”,弹出数据源配置界面。系统默认的会包含一个demo数据源。步骤2:选中demo数据源,点【连接】按钮,数据源变成粉色,并且后面的说明也显示[已连接]。此时数据源已经连接,我们可以操作demo数据源。注:本文档所有例子数据源均来自该数据库正常情况demo数据库会随设计器一同启动,如果不能正常连接,请通过下面方式查看demo数据库是否正常启动。方法一:在“外挂菜单”中选择“数据库”,我们会看到两个选项,如图:此时“停止数据库”可以选择,“启动数据库”被灰掉,说明demo数据库已启动,可以连接数据源。反之,若“停止数据库”被灰掉,“启动数据库”为可以选择状态,则说明数据库未启动,点“启动数据库”即可。方法二:选择“配置”--“选项”,弹出选项窗口,选择“接管控制台”,如图:重新启动设计器,在“配置”菜单中多了“控制台”一项。如图:点击进入控制台窗口,如出现下列信息说明数据库正常启动,可以连接数据源。入门1打开设计器制作一张报表包括哪几个步骤?1打开设计器如果数据源已经存在或不需要从数据库取值,此步可跳过。8报表发布如果数据源已经存在或不需要从数据库取值,此步可跳过。8报表发布2定义数据源连接2定义数据源连接如果不需要如果不需要数据源,此步可跳过。3连接数据源4新建报表4新建报表数据集是数据的来源,如果报表为静态报表,此步可跳过。数据集是数据的来源,如果报表为静态报表,此步可跳过。5定义数据集5定义数据集6定义单元格表达式6定义单元格表达式7预览报表7预览报表一张最简单的报表先做一张和数据库无关的报表。该报表保存为3.2.raq步骤1:直接点击工具栏上的按钮,新建一张空白报表,如下图所示:步骤2:在B2单元格里填写:=to(1,10)。并选中B2格点击工具栏上的将单元格加上方框。HYPERLINKto函数说明如下图所示:步骤3:然后点击工具栏上的按钮,查看预览,如下图所示:我们可以看到,B2格子里的数据自动进行了扩展。这正是报表工具与电子表格工具的最基本差异。电子表格工具只能在每个格子里填好内容,不能自动进行这种扩展。● 从这个最简单的例子,我们会发现,定义报表的时候只用到了B2单元格,其他单元格都没有被使用,但是如果我们把其他单元格都设成红色背景,再预览时如下图所示:大家会发现,那些没用的单元格也被扩展并且复制了,由此导致报表运算过程中存在大量的冗余单元格,这些单元格都占据了内存。因此为了提高报表的运算效率,请把没用的单元格删掉,如下图所示:这个例子还只是最初级的,后面我们会学到如何基于数据库进行各种复杂的扩展。●to函数说明:生成一组连续的整数数据语法:to(startExp,endExp{,stepExp})参数说明:startExp整数数据开始的表达式endExp整数数据结束的表达式stepExp整数数据步长的表达式函数示例:to(1,5)=list(1,2,3,4,5)to(1,5,2)=list(1,3,5)to(-5,-10,-2)=list(-5,-7,-9)to(-10,-8)=list(-10,-9,-8)将报表发布到web上将3.2中的报表发布到web上步骤1:在设计器中打开3.2中的报表,点工具栏的按钮,在弹出的窗口中输入报表发布路径(C:\ProgramFiles\reportHome\webapps\demo\reportFiles)和报表文件名(3.2.raq)。点“确定”发布报表。步骤2:点击工具栏的按钮,启动快逸报表中内置的tomcat。步骤3:点击工具栏的按钮,启动IE浏览器,在浏览器中展现表报。这样我们刚才做好的报表就可以在页面上展现出来了,上面的工具菜单可以灵活定制,实现打印、保存EXCLE、PDF等功能。网格式报表网格式报表,体会扩展第一步:点击桌面图标,或在开始菜单中选择运行快逸设计器。如下图所示:设计器界面第二步:在菜单栏中选择“配置”—“数据源”弹出数据源连接窗口,设计器默认的配置好一个系统数据源,我们选中后点“连接”Demo数据源显示[已连接],点“关闭”。第三步:新建报表,在菜单栏中选择“文件”--“新建”,在弹出的窗口中选择“报表”,点“确定”●新建报表的注意事项:新建报表的窗口中存在普通报表和填报或参数表单两个选项,如果是汇总类型的报表,一般选择普通报表,如果需要填写的或者作为参数模板使用的,选择填报或参数表单。数据集类型选择“SQL检索”,点“下一步”进入SQL编辑器窗口。数据集是一个二维的视图,是报表的数据来源。数据集可以通过数据库的sql查询获得,也可以来自其他异构的数据文件。报表运算引擎不关心数据集的数据来自哪里,始终基于数据集的数据来运算报表。因此,制作报表的第一步:定义数据集选择指定模式为全部,在可选表名中双击EMPLOYEE表,点“数据字段”标签在数据字段列表中选择我们想要展现的字段,通过“语法”标签可以查看到前数据集的语句:ds1:SELECTEMPLOYEE.EMPID,EMPLOYEE.EMPNAME,EMPLOYEE.BIRTHDAY,EMPLOYEE.SEX,EMPLOYEE.DEGREE,EMPLOYEE.BONUSFROMEMPLOYEE选好后点“确定”回到向导窗口。点“生成空白报表”进入设计器编辑界面,我们看到,一张网格式报表就做好了,单元格中自动产生了表达式:A2单元格中表达式为:=ds1.Select(EMPID)HYPERLINKselect函数说明B2单元格中表达式为:=ds1.EMPNAMEC2单元格中表达式为:=ds1.BIRTHDAYD2单元格中表达式为:=ds1.SEXE2单元格中表达式为:=ds1.DEGREE将第一行的英文名称改写成中文并设置居中显示。HYPERLINK居中显示第四步:HYPERLINK保存预览第五步:HYPERLINK发布报表●设置标题位置:可以通过工具栏上的,,图标将标题设为居左,居中和居右。●select函数说明函数说明:从数据集的当前行集中选取符合条件的记录语法:datasetName.select(<select_exp>{,desc_exp{,filter_exp{,sort_exp{,rootGroupExp}}}})datasetName.select(<select_exp>,,<filter_exp>)//适用于不需排序或数据集中已排好序 参数说明:select_exp: 要选择的字段列名/列号,,也可以是表达式。 列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推desc_exp: 指定数据排序的顺序,true表示降序排列,false表示升序排列。filter_exp: 数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。sort_exp: 数据排序表达式。当此项为空时先检查desc_exp是否为空,如果为 空,则不排序,否则使用select_exp排序。rootGroupExp 是否root数据集表达式返回值:一组数据的集合,数据类型由select_exp的运算结果决定 函数示例:例1:ds1.select(name) 从数据源ds1中选取name字段列的所有值,不排序 例2:ds1.select(#2,true) 从数据源ds1中选取第二个字段列的所有值并降序排列 例3:ds1.select(name,false,sex=='1') 从数据源ds1中选取性别为男性的name字段列的值并升序排列 例4:ds1.select(name,true,sex=='1',id) 从数据源ds1中选取性别为男性的name字段列的值并按id字段降序排列Select()函数注意事项Select()函数注意事项select函数选出了一组字段值,该组字段值保留了一个指针,指向数据集中的源记录,也就是说,该组字段值和数据集中的记录保持一一对应的关系,因此在当前格的附属单元格里(如B2、C2),如果采取dsn.colname的表达式从当前数据集里取其他字段的值,默认从当前主格指向的记录里取值,而不需要到数据集中检索。因此,在当前格的附属格里建议尽量使用dsn.colname表达式,而不采用dsn.select1(colname,filterexp),因为后者需要对表达式进行解析,速度慢。报表设计好后,点工具栏按钮,保存报表快逸报表模板保存时,和excel一样,一个模板就是一个文件,由用户自己管理。保存的报表模板不含数据,只有表达式和属性定义。使用时,打开模板,连接数据源,点击预览按钮或工具栏即可浏览运算后的结果报表预览后的结果报表也可以保存,此时保存的是报表格式和数据,不含表达式显示格式、显示值在4.1中设计的报表性别、学历都是用数值显示的,而且奖金等格式也并不美观,那么我们可以在4.1的基础上增加显示格式、显示值等设置,使报表可读性更强第一步:增加一个数据集ds2:SELECTDEGREE.ID,DEGREE.NAMEFROMDEGREEHYPERLINK增加数据集第二步:定义表达式:将A2单元格表达式修改为:=ds1.Select(int(EMPID),false)HYPERLINKint函数说明该表达式是将字符串型的EMPID转换成整数,再做排序操作。设置C2单元格的显示格式为:yyyy年MM月dd日HYPERLINK显示值说明HYPERLINKmap函数说明设置E2的显示值为:ds2.select1(name,id==value())HYPERLINKselect1函数说明HYPERLINKvalue函数说明第三步:HYPERLINK保存预览第四步:HYPERLINK发布报表●增加数据集:单击菜单栏中的【配置】,在下拉菜单中选择【数据集】,在弹出的窗口点【增加】,弹出”数据集类型”窗口,如图:选择”SQL检索”,点【确定】,即可弹出”SQL检索”窗口,接下来可像新建报表时一样定义SQL。●Int函数说明将字符串或数字转换成整数语法:int(string)int(number)参数说明:string需要转换的字符串表达式number数字,如果带有小数位,转换后小数位被截掉返回值:32位整数示例:例1:int("100")返回:100例2:int(100.1)返回:100例3:int(100.9999)返回:100显示格式:报表运算出来的数据,往往需要按照一定的格式进行展现,例如金额1234.5678希望显示成¥1,234.56,日期2005/12/25希望显示成2005-12-25,百分比0.2345希望显示成23.5%等等虽然对数据的显示格式有一定的要求,但是单元格里真实的数据不能改变,照样能够被其他单元格引用,例如1234.5678虽然显示成1,234.56,但是其他单元格引用时,引用的是1234.5678而不是1,234.56,否则会导致误差显示格式的设置方法:选中需要设置显示格式的单元格(可以批量选择),双击属性列表中的显示格式,如下图所示:鼠标双击鼠标双击双击后,弹出显示格式编辑对话框,如下图所示:选择相关的显示格式,也可手工敲入,点击确定,显示格式设置完成。显示值:由于业务的需要以及设计数据库的考虑,从数据库中事实表中取出来的很多度量字段的值往往是编码,例如员工表的性别字段,往往存的是0或者1,但是在报表中希望显示成男或女虽然编码字段在报表中显示成对应的中文,但是该单元格的真实编码还需要保留,当别的单元格引用该单元格时,引用的是编码而非中文,此时就需要用到单元格的显示值属性单元格的显示值也可以被引用,此时用到disp函数,例如:disp(A1)代表A1单元格的显示值。显示值的定义有两种方式:单值和对照表举例:单值定义法:1、例如:"中国",那么该单元格就显示为"中国"2、例如:ds1.select1(name,value()==id)对照表定义法: 例如:map(list("0","1"),list("男","女"))● 特别说明: 当对数据集运用过滤条件后确定只剩一条记录时,虽然select和select1的的运算结果一样,但是select1运算效率高,因为他只要找到符合条件的记录,就不继续检索了,而select要检索完所有的记录才返回。考虑到显示值属性的定义里,几乎所有情况都只需要返回一条记录,因此建议大家使用select1,不要使用select● map函数说明:显示值对照表函数,从对照表中找出当前单元格对应值的显示值,没有则返回null语法:map(valueListExp,displayListExp)参数说明:valueListExp真实值列表,可以是可扩展单元格或结果为集合列表的表达式displayListExp显示值列表,可以是可扩展单元格或结果为集合列表的表达式真实值列表和显示值列表一一对应返回值:字符型,和当前格真实值对应的显示值示例:例1:map(to(1,3),list("男","女","不定"))例2:map(arg1,arg2)其中arg1为1,2,3组成的参数组,arg2为"男","女","不定"组成的字符串组例3:map(list(1,2,3),list("男","女","不定"))●Select1函数说明:从数据集中按顺序检索到符合过滤条件的第一条记录,返回其selectExp值语法:datasetName.select1(selectExp{,filterExp{,rootGroupExp}})参数说明:selectExp要选择的字段列名/列号,,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推filterExp过滤条件rootGroupExp是否root数据集表达式返回值:数据类型不定,由selectExp的运算结果决定特别说明:当对数据集运用过滤条件后确定只剩一条记录时,虽然select的运算结果一样,但是select1运算效率高,因为他只要找到符合条件的记录,就不继续检索了,而select要检索完所有的记录才返回。示例:例1:ds1.select1(name)返回数据集ds1中第一条记录的name字段值例2:ds1.select1(name,score>90)从数据集ds1中检索出成绩大于90的记录,返回第一条记录的name字段值●Value函数说明:取得当前单元格的值语法:value()返回值:当前单元格的值报表区域用设计器打开报表4.2,在该报表上做修改,增加页眉、页脚、标题、表头、表尾等。第一步:定义表达式在报表4.2中,选中第一行,在行首格点右键,在弹出的菜单中选”插入行”,如图:此时在报表顶端增加了一行,重复上面的操作,共增加两行。选中第一行的行表头,设置属性列表的“行类型”为“分页页眉”。如图所示:再选中第二行,设置属性列表的“行类型”为“头标题”。如图选中第四行,在行首格点右键,在弹出的菜单中选”追加数据行”,如图:重复上一步操作,共追加两行。追加后选中第六行,设置属性列表的“行类型”为“分页页脚”。如图所示:选中第五行,设置属性列表的“行类型”为“报表尾”。如图所示:在页眉、标题、表尾、页脚等区域分别输入相应内容,并调整报表格式。如图所示:在报表页脚区的F6单元格中输入表达式:="第"+pno()+"页"HYPERLINKpno函数说明在报表页尾区的F5单元格中输入表达式:=now()HYPERLINKnow函数说明并设置显示格式为:yyyy-MM-ddHYPERLINK显示格式说明第二步:保存预览预览后我们看到,因为设置了表头区和标题区,我们在显示多条数据的时候,表头被冻结,滚动条的拖拽只是数据区随着改变。第三步:HYPERLINK报表发布在WEB中发布后的报表一样可以显示和设计器里一样的效果,冻结表头。●pno函数说明:取得当前页的页码,注意,本函数只是在分页后才有效语法:pno({booleanExp})参数说明:booleanExp表达式返回值:当前页的页码。函数示例:pno()返回前页在总的页表中的页码pno(true)返回前页在纵向分页的页表中的页码pno(false)返回前页在横向分页的页表中的页码●pcount函数说明函数说明:取得总的页数,注意,本函数只是在分页后才有效语法:pcount({booleanExp})参数说明:booleanExp表达式返回值:页数。函数示例:pcount()返回总的页表中的页数pcount(true)返回纵向分页的页表中的页数pcount(false)返回横向分页的页表中的页数●pcsum函数说明函数说明:计算分页后的当前页中所有的单元格(cellExp)的和,注意,本函数只是在分页后才有效语法:pcsum({cellExp})参数说明:cellExp表达式返回值:当前页中所有的单元格(cellExp)的和函数示例:pcsum(A2{条件})返回当前页中所有的A2格之和●pccount函数说明函数说明:计算分页后的当前页中所有的单元格(cellExp)的个数,注意,本函数只是在分页后才有效语法:pccount({cellExp})参数说明:cellExp表达式返回值:当前页中所有的单元格(cellExp)的个数函数示例:pccount(A2{条件})返回当前页中所有的A2格的个数●now函数说明:函数说明:获得系统此刻的日期时间语法:now()返回值:日期时间设置预警条件用设计器打开报表4.3,在该报表上做修改,使奖金高于15000元的员工信息用红色显示。第一步:定义表达式选中第四行,设置第四行的前景色表达式为:if(F4>15000,-65536,-16777216)HYPERLINKif函数说明该表达式意思是当员工奖金高于15000时用红色字体显示,否则用黑色字体显示。第二步:保存预览第三步:HYPERLINK发布报表●if函数说明:根据布尔表达式的不同计算结果,返回不同的值。本函数从左到右计算,先出现的布尔表达式先算,如果出现为true的表达式,则返回相应的结果,后面的不再计算。如果没有一个布尔表达式为true,而且有缺省值表达式,则返回缺省值,否则返回null。语法:if(boolExp1,valueExp1{,boolExp2,valueExp2{,boolExp3,valueExp3{,{defaultExp}}}})参数说明:boolExp(n)布尔表达式,如果结果为真,则返回对应的值表达式计算结果valueExp(n)值表达式,和布尔表达式一一对应defaultExp缺省值表达式,如果所有布尔表达式结果都为假,则返回本表达式计算结果返回值:数据类型不定,由valueExp(n)的运算结果决定。示例:例1:if(value()>100,-65536,value()<=100andvalue()>80,-16776961,-14336)表示当前格的值大于100时,返回-65536颜色值,当前格的值小于等于100且大于80时,返回-16776961颜色值,否则返回-14336颜色值增加动态背景色用设计器打开报表4.4,在该报表上做修改,使单双行显示一同的背景色。第一步:定义表达式选中第四行,设置第四行的背景色表达式为:if(row()%2==0,-3342337,-1)HYPERLINKif函数说明,HYPERLINKrow函数说明该表达式意思是当行数为偶数行时背景色显示为浅蓝色,当行数为奇数行时背景色显示为白色第二步:保存预览第三步:HYPERLINK发布报表● row函数说明:取得当前单元格所在行的行号语法:row({cellExp})参数说明:cellExp单元格表达式(不写表示当前单元格)返回值:整数举例:在第三行单元格中写入=row(),返回值为3,如果第三行存在纵向扩展格,则行号依次改变。取数排序 报表中,取数展现的时候往往要求记录按照一定的顺序进行排列,我们称为排序。比如4.1节中的报表,如果想按照员工id进行升序排列,该如何实现?按”员工编号”升序排序 快逸报表提供了两种排序方式:sql中排序,select函数中排序,下面分别介绍。第一种:SQL中排序 SQL中排序是指在定义数据集的时候就把数据按着升序或降序排好,在报表设计阶段直接取数即可,我们在例子4.1上做修改。 单击主菜单中的【配置】->【数据集】,在弹出的”数据集设置”窗口中选中ds1数据集,点【编辑】弹出”SQL编辑器”,在【排序】标签页中选择要排序的字段,如图:生成的语法:第二种:select函数中排序 该方法是通过设置select函数的参数来实现排序,还以例4.1为例做修改。如果想以”EMPID”字段升序排列,可以将A2单元格表达式改写为:=ds1.Select(int(EMPID),false),此时报表就是以EMPID字段做升序排序了,若将表达式中的false改成true,则是以EMPID做降序排列。如果想用”姓名”字段排序,可以将A2单元格的表达式改写成:=ds1.Select(EMPID,false,,EMPNAME)更多用法请参考HYPERLINKselect函数说明 SQL中排序是在数据库中进行,而通过select函数排序是在报表端进行,数据库中有索引,且数据库是c语言开发的,数据运算速度快,因此如果报表中的排序规则是确定的,那么建议排序操作选择在数据库端进行。参数参数的概念在我们设计一张报表的时候,很少有里面的数据是固定不变的,常常需要根据一些条件来过滤出我们想要的数据。这就需要通过参数的形式控制报表中的数据。下面,根据前面的报表,我们加入参数使它变成一张更灵活的报表。参数的使用用设计器打开报表4.5,在该报表上做修改,增加两个参数,使报表更灵活。第一步:单击主菜单中的【配置】,在下拉菜单中选择【参数】弹出【参数编辑】窗体,如下图所示:第二步:单击【增加】按钮,新增加一个参数,默认名称为“arg1”,名称可根据自己的需要来命名。这里我们把【名称】和【描述】分别改成“name”和“员工姓名”,【数据类型】我们选择默认的“字符串”。如下图所示:同样的方法再增加一条”奖金”参数,【数据类型】设置为”数值型”。注:参数名称尽量用英文,中文容易在部署的时候出现乱码,徒增烦恼。第三步:单击主菜单中的【配置】,在下拉菜单中选择【数据集】,弹出【数据集设置】窗体,如下图所示:点【编辑】按钮,弹出SQL编辑器,可以在此对数据集进行修改。选择【检索条件】标签,设置检索条件(EMPLOYEE.EMPNAMElike?andEMPLOYEE.BONUS>?),如图所示:选择【参数】标签,点【增加】按钮,增加两个参数与检索条件中的”?”匹配。点确定,完成参数的设置。第四步:在设计器中预览报表,点按钮,会弹出”设置报表参数窗口”,录入相关信息,如图所示:点【确定】查询出名字中包含”小”字且奖金高于200的员工,如图:第五步:此时的报表已经可以实现根据参数的不同而查询出不同的报表了,可是很多时候用户往往希望参数值不录的时候选出所有记录,接下来我们来对报表做一点修改,来实现这一功能。 单击主菜单中的【配置】,在下拉菜单中选择【数据集】,弹出【数据集设置】窗体,点【编辑】按钮,弹出SQL编辑器,将【检索条件】修改为:(EMPLOYEE.EMPNAMElike?or?isnull)and(EMPLOYEE.BONUS>?or?isnull).如图所示:然后在【参数】标签页中按照问号顺序,写入参数名或含参数的表达式,如下图所示: 此时预览报表,不录入任何参数即可查询出所有记录。参数模板设计报表参数可以通过外部传入,最简单实用的办法是通过快逸报表设计器来设计参数表单。使用参数表单来接受并引入数据。下面我们来做一个配合上述表例的参数表单。第一步:点击工具菜单上的【文件】->【新建】,如图:打开新建向导对话框,选择【填报或参数表单】,再点【生成空白报表】按钮生成一张参数模板,如图所示:第二步:分别在A1和A2中输入“姓名:”和“奖金高于:”,设置单元格内容为居中。如图:选中B1和B2单元格点右键,在下拉菜单中选择【填报属性】在弹出的”数据填报”窗口中将”是否可写”选中,点【确定】完成,如图:选择B1单元格,设置它的【变量名】属性为:name,即对应前面我们做的参数报表中的参数“name”。如图所示:按以上方法设置B2格的【变量名】属性为:bonus。如图所示:为了看上去更美观,我们给报表增加边框,并删除多余单元格,这样一张参数模板就做好了,如图所示:将报表和参数模板结合起来发布最后,我们需要把参数模板也部属在服务器上,并让它和参数化报表一起工作。第一步:在设计器中打开5.3中的参数模板,点工具栏的按钮,在弹出的窗口中输入报表发布路径(C:\ProgramFiles\reportHome\webapps\quiee\reportFiles)和报表文件名(5.4_arg.raq)。HYPERLINK发布报表第二步:按第一步方式发布报表,报表文件名为5.4.raq。第三步:点击工具栏的按钮,启动快逸报表中内置的tomcat。第四步:点击工具栏的按钮,启动IE浏览器,在浏览器中展现报表。如图:行式报表行式报表的概念行式展现报表是快逸独有的报表展现形式,大多为明细数据的流水帐,例如交易明细、流水清单等等,其特点是报表样式简单(就是数据库中物理表的样式)、数据量大(每发生一次交易,就会有相应的记录),几百上千万,甚至GB级的数据量。利用快逸提供的行式展现报表方案,在面对大数据量的清单式报表展现问题上,可以大大提高运算速度,一次性处理大批量数据,方便快捷。行式展现报表的优点:运算速度快处理数据量大行式展现报表最突出的特点和优势就是运算速度快,相同时间内可处理的数据量跟常规报表相比大大提高。我们以具有20万条记录的表为例,来对普通网格式报表和行式展现报表的运算速度进行一下对比。普通网格式报表:用时49秒。行式展现报表:用时29秒。可以看出,在20万条记录的情况下,使用行式报表可以缩短40%以上的运算时间,大大提高了运算效率。当数据量再继续增加的时候,行式展现报表的高效优势就会体现得越发明显。只有满足以下特征的报表,才可以是行式报表:●行式报表的特征包括:主格不同行例:主格在同一行,属于普通报表。例:主格不在同一行,属于行式报表。无横向扩展例:单元格横向扩展,不是行式报表。例:单元格纵向扩展,是行式报表。无拉伸单元格例:扩展时存在纵向拉伸单元格,不是行式报表例:扩展时无拉伸单元格,是行式报表按源格遍历法运算(源格不能循环引用)(该条请参照快逸报表高级教程,如占比、累积等运算都属于源格循环引用)无图注不包含任何类型的统计图。注:菜单上的行式报表检查并不能完全检查出是否是行式报表(也就是说,菜单里判断出来的非行式报表肯定是正确的,但是菜单判断出来部分行式报表,有可能是非行式报表)不支持隐藏行/列:设置为普通报表时的预览结果:设置为行式报表时的预览结果:可见,行式报表不支持隐藏行/列属性。不支持自动换行/尺寸调整方式:行式报表不支持自动换行和尺寸调整方式属性。不支持行/列后分页在第二行设置为行后分页,第二列设置为列后分页。设置为普通报表时的预览结果:设置为行式报表时的预览结果: 可见,行式报表不支持行/列后分页。把网格报表变成行式报表第一步:检查是否为行式报表。在菜单栏中选择【属性】->【检查是否行式】,此时会弹出消息窗口,如图:如果报表类型是【行式报表】才可以进行设置。第二步:用设计器打开报表4.2,在菜单栏中选择【属性】->【报表属性】,弹出”报表属性”编辑窗口,如图:将【报表样式】设为”行式报表”,点【确定】。第三步:HYPERLINK保存预览第四步:HYPERLINK发布报表分组报表分组报表,体验主子格概念第一步:HYPERLINK打开设计器第二步:HYPERLINK连接数据源第三步:新建报表,在菜单栏中选择“文件”--“新建”,在弹出的窗口中选择“报表”,点“确定”数据集类型选择“SQL检索”,点“下一步”进入SQL编辑器窗口。选择指定模式为”全部”,在可选表名中双击”客户”表,点【数据字段】标签在数据字段列表中选择我们想要展现的字段,通过【语法】标签可以查看到前数据集的语句:ds1:SELECT客户.城市,客户.公司名称,客户.联系人姓名,客户.联系人职务FROM客户选好后点【确定】回到向导窗口将【报表类型】设为”分组报表”,点【下一步】进行分组定义。将”城市”字段拖到【分组定义】中,其它默认不变,点【生成分组报表】,进入设计器编辑界面,我们看到,一张分组报表就做好了,单元格中自动产生了表达式:A2单元格中表达式为:=ds1.Group(城市,false)HYPERLINKgroup函数说明B2单元格中表达式为:=ds1.Select(EMPID),此时B2单元格的左主格默认是A2单元格,因此,B2单元格随A2单元格的扩展而扩展。HYPERLINKselect函数说明HYPERLINK左主格说明C2单元格中表达式为:=ds1.联系人姓名D2单元格中表达式为:=ds1.联系人职务将报表内容设置居中显示。HYPERLINK居中显示第四步:HYPERLINK保存预览第五步:HYPERLINK发布报表●group函数说明:根据分组表达式,从数据集中选出一组组集。语法:datasetName.group(<selectExp>,,<filterExp>)//适用于不需要排序或数据集中已排好序datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})参数说明:selectExp选出的分组表达式,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推descExp分组前记录的排序顺序,true为逆序,false为顺序filterExp过滤表达式sortExp分组前记录的排序依据表达式groupSortExp分组后对组的排序表达式,一般是汇总运算的表达式,如组合计等groupDescExp组排序顺序,true为逆序,false为顺序rootGroupExp是否root数据集表达式返回值:一组数据的集合,数据类型由selectExp的运算结果来决定示例:例1:ds1.group(class)把数据集ds1中所有记录按照class字段进行分组,并返回每组的class值组成的集合例2:ds1.group(class,true)把数据集ds1中所有记录按照class字段降序排列,然后根据class进行分组,并返回每组的class值组成的集合例3:ds1.group(class,false,sex=='1')从数据源ds1中选取性别为"1"的记录,按照class字段升序排列,然后根据class进行分组,并返回每组的class值组成的集合例4:ds1.group(class,true,sex=='1',id)从数据源ds1中选取性别为"1"的记录,按照id字段降序排列,然后根据class进行分组,并返回每组的class值组成的集合例5:ds1.group(省份,true,,,sum(工业产值),true)对数据集ds1按照省份进行分组,分组后求出每组的sum(工业产值),然后按照这个汇总值对组进行逆序排列左主格:单元格进行纵向扩展时,我们称其为其右边格子的左主格。左主格属性可以默认缺省,也可以人为的改变。会把其所有的附属单元格都进行复制,带动着一起扩展。在例子9.1中,所有单元格的左主格都是B2,因此当B2单元格进行扩展时,带动着其他所有格子一起复制,由此形成了一条记录就是一页报表的效果多层分组用设计器打开报表7.1,在该报表上做修改,增加一级分组,变成多层分组第一步:单击主菜单中的【配置】,在下拉菜单中选择【数据集】,弹出【数据集设置】窗体,如下图所示:点【编辑】按钮,弹出SQL编辑器,可以在此对数据集进行修改,在此我们增加一个字段”地区”点【确定】完成对数据集的修改。第二步:定义表达式1,在报表7.1中,选中第一列,在列首格点右键,在弹出的菜单中选”插入列”,如图:在A1单元格输入:地区在A2单元格输入:=ds1.group(地区,true)HYPERLINKgroup函数说明给报表增加边框,并设置居中显示等,使报表更美观。第三步,HYPERLINK预览报表第四步:HYPERLINK发布报表● 主格和附属格单元格进行扩展的过程中,缺省情况下,相对于其右(下)边的单元格而言,扩展格是主动复制的,被称为其它格(其右/下的格)的主格,而其右(下)的单元格是被动跟随复制的,被称为扩展格的附属格或子格。主格和附属格是相对的概念,即某格是另一格的主格或附属格,不存在单独的主格和附属格。从主格的定义中看,显然只有扩展格才能是其它格的主格!要注意的是,在缺省情况下,扩展格左(上)的格并不是其附属格,只有右(下)的格才是其附属格。特别地,某个单元格的主格属性可以人为被改变。● 左主格:单元格进行纵向扩展时,我们又称其为其右边格子的左主格。左主格属性可以默认缺省,也可以人为的改变。缺省左主格认定规则:单元格纵向扩展时,左边纵向扩展单元格缺省为它的左主格,右边单元格缺省为它的附属格;如果左边没有纵向扩展格,则左主格缺省为`0格。人为改变主格规则:可以将某个单元格的左主格设置成某个纵向扩展格。如果要将某单元格的上主格改为00格,则将其上主格属性设置为`0。为了符合扩展变化的规则,我们可以知道人为设置主格需要满足一些条件:左主格必须是纵向扩展格,否则设置无效。不允许出现循环设置的情况,即设置A的主格是B,B的主格是C,C的主格又是A,出现循环设置时认为设置有误,报表无法计算。显然,在缺省的情况下是不可能出现循环设置的,而在人为设置时必须避免这种情况的出现。横向扩展格不允许有左主格。人为设置时,可能发生左主格在右边的情况,而且主格也不一定和附属格在同一行上。汇总统计分组汇总用设计器打开报表7.2,在该报表上增加分组汇总。第一步:定义表达式在报表7.2中,选中第一行,在行首格点右键,在弹出的菜单中选”追加数据行”,如图:合并A2,A3单元格。HYPERLINK合并单元格在C3单元格录入表达式:=count(C2{})HYPERLINK单元格count函数说明合并C3、D3、E3单元格。增加单元格边框,并修改汇总行背景色加以区分。第二步:HYPERLINK预览报表第三步:HYPERLINK合并单元格在A2单元格输入表达式:=ds1.group(地区,true)HYPERLINKgroup函数说明合并C2、D2、E2单元格。在C2单元格录入表达式:=count(C3{})+"家"HYPERLINK单元格count函数说明增加单元格边框,并修改汇总行背景色加以区分。保存预览汇总样式变换2在报表7.2的基础上增加分组汇总,将汇总行放在每组下方,不合并分组格。表达式如图:1,在报表7.2中,选中第2行,在行首格点右键,在弹出的菜单中选”追加数据行”,如图:2,合并B3、C3、D3、E3单元格HYPERLINK合并单元格3,在B3单元格输入表达式:=count(C2{})+"家"HYPERLINK单元格函数count说明4,将A3单元格的左主格设为A2单元格HYPERLINK左主格说明5,增加单元格边框,并修改汇总行背景色加以区分。保存预览汇总样式变换3在报表7.2的基础上增加分组汇总,将汇总行放在每组上方,不合并分组格。表达式如图:1,在报表7.2中,选中第2行,在行首格点右键,在弹出的菜单中选”插入行”,如图:2,合并B2、C2、D2、E2单元格HYPERLINK合并单元格3,在B2单元格输入表达式:=count(C3{})+"家"HYPERLINK单元格函数count说明4,将A2单元格的左主格设为A3单元格HYPERLINK左主格说明5,增加单元格边框,并修改汇总行背景色加以区分。保存预览●合并单元格:选中要合并的单元格,点工具栏的即可完成合并操作。●count函数说明:对可扩展单元格或集合表达式进行计数语法:count(expression{,containNull})参数说明:expression需要被计数的单元格或表达式,一般为可扩展单元格或集合表达式containNull缺省为true,表示对null元素也进行计数;false则相反返回值:整数示例:例1:count(A1:B10,false)以当前格为基格计算A1和B10之间总共有几个单元格,如果单元格的值为空则不进行计数例2:count(A1[1]:B10[3])计算A1扩展出来的第一个格和B10扩展出来的第三个格之间总共有几个单元格例3:count(arg1)其中arg1是参数组,统计arg1中有几个数据例4:count(B1{})表示求得当前主格扩展区域内所有扩展后的B1单元格的个数例5:count(B1{`0}{})表示求得根坐标下所有扩展后的B1单元格的个数计算列的汇总前面的例子,还只是比较简单的汇总,下面我们看一个例子,这个例子就复杂一些了:从上图中可以看出,这个报表不是简单地对某个单元格进行汇总,而是对D2*E2的值进行计算,一般的报表工具需要对这种情况定义一个隐藏格(本例中将E列隐藏),先把D2*E2计算出来,再进行汇总,这种方式耗费内存,也影响效率。快逸提供了更加简洁的计算方式,做法如下:第一步:HYPERLINK打开设计器第二步:HYPERLINK连接数据源第三步:HYPERLINK新建空白报表第四步:HYPERLINK定义数据集ds1:SELECT产品.产品名称,产品.库存量,产品.单价,产品.产品IDFROM产品WHERE产品.中止='0'AND产品.类别ID='5'第五步:定义表达式在A2单元格输入表达式:=ds1.Select(产品ID)HYPERLINKselect函数说明在B2单元格输入表达式:=ds1.产品名称在C2单元格输入表达式:=ds1.库存量在D2单元格输入表达式:=ds1.单价在C3单元格输入表达式:=sum(B2{},C2*D2)HYPERLINKsum单元格函数说明第六步:HYPERLINK美化外观第七步:HYPERLINK保存预览第八步:HYPERLINK发布报表统计图,初步了解统计图的使用用设计器打开报表7.3,在该报表最下方增加统计图,利用分组汇总的数据来生成第一步:定义表达式在报表下端追加一行,并将这一行的高度适当调高。HYPERLINK追加数据行在A4单元格上点右键,在下拉菜单中选择【统计图】,设置如图所示:第二步:HYPERLINK保存预览第三步:HYPERLINK发布报表跟随扩展的统计图用设计器打开报表7.5,在该报表组内设计统计图,最后看扩展出来每一组都有一个统计图的效果第一步:定义表达式在报表7.4的基础上,将A4单元格的左主格设为A2即可。第二步:HYPERLINK保存预览第三步:HYPERLINK发布报表交叉报表交叉报表,体会横向扩展第一步:HYPERLINK打开设计器第二步:HYPERLINK连接数据源第三步:新建报表,在菜单栏中选择“文件”--“新建”,在弹出的窗口中选择“报表”,点“确定”数据集类型选择“SQL检索”,点“下一步”进入SQL编辑器窗口。选择指定模式为”全部”,在可选表名中双击”EMPLOYEE”表,点【数据字段】标签在数据字段列表中选择我们想要展现的字段,通过【语法】标签可以查看到前数据集的语句:ds1:SELECTEMPLOYEE.DEGREE,EMPLOYEE.EMPID,EMPLOYEE.TITLEFROMEMPLOYEE选好后点【确定】回到向导窗口将【报表类型】设为”交叉报表”,点【下一步】进行分组定义。将”DEGREE”字段拖到【列定义】中,将”TITLE”字段拖到【行定义】中,将”EMPID”字段拖到【交叉汇总】中,其它默认不变,点【生成交叉报表】,进入设计器编辑界面,我们看到,一张交叉报表就做好了,单元格中自动产生了表达式:HYPERLINK单元格斜线第四步:定义表达式增加数据集ds2:SELECTDEGREE.ID,DEGREE.NAMEFROMDEGREEHYPERLINK增加数据集增加数据集ds3:SELECTTITLE.ID,TITLE.TITLENAMEFROMTITLE将B1单元格的显示值设为:ds2.select(NAME,,ID==value())HYPERLINKselect函数说明HYPERLINK显示值说明 此时B1单元格出现一个红色的箭头,选择B1单元格,右侧属性的【扩展方式】显示为”横向扩展”。HYPERLINK横向扩展将A3单元格的显示值设为:ds3.select(TITLENAME,,第五步:HYPERLINK美化外观第六步:HYPERLINK保存预览第七步:HYPERLINK发布报表● 设置单元格斜线:选中单元格,点击属性下拉菜单中的边框设置,设上斜线属性,然后直接在单元格里输入分类字段,字段间用逗号隔开。 注意:逗号为英文输入状态的逗号 然后将A1单元格的高度调高为一个合适的高度,否则单元格高度太低会看不到斜线效果。● 横向扩展:当可扩展单元格的扩展方向为横向时,该单元格进行的扩展称为横向扩展。此时该单元格会横向进行复制,复制出的单元格的数据值依次为表达式的结果数据值,表达式返回几个值,单元格就复制几个。复制出来的新单元格的所有属性都引用被复制单元格的属性;图例多层交叉,深入了解扩展用设计器打开报表8.1,将该报表改为多层交叉报表。第一步:修改数据集选择【配置】->【数据集】,在”数据集设置”窗口选中ds1数据集,点【编辑】。在弹出的”SQL编辑器”中增加一个字段”SEX”,如图:第二步:定义表达式在C列前插入一列。HYPERLINK插入列合并A1、B1、B2单元格HYPERLINK合并单元格在B3单元格输入表达式:=ds1.Group(sex,false)HYPERLINK显示值说明HYPERLINKmap函数说明HYPERLINKlist函数说明第三步:HYPERLINK保存预览第四步:HYPERLINK发布报表● list函数说明:函数说明:获得一个枚举的数据集合语法:list(valueExp1{,valueExp2{,valueExp3{,……}}})参数说明:valueExp(n)可以是常数或表达式,也可以是集合表达式返回值:一组枚举数据的集合示例:例1:list(1,3,5,7,9)例2:list("abc","def","ghj")例3:list(arg1,to(1,3),"a","b","c")假设arg1是个整数组,其值为7,8,9,那么该表达式的结果值为{7,8,9,1,2,3,"a","b","c"}汇总统计,深入了解汇总规则用设计器打开报表8.2,在该报表上增加分组汇总。第一步:在报表8.2的基础上,在报表的最下端追加两行,在最右端追加一列。第二步:定义表达式合并单元格D1、D2HYPERLINK合并单元格合并单元格A3、A4合并单元格A5、B5在D3单元格输入表达式:=sum(C3{})HYPERLINKsum单元格函数说明在D4单元格输入表达式:=sum(C3{})在D5单元格输入表达式:=sum(C3{})在C3单元格输入表达式:=sum(C3{})在C4单元格输入表达式:=sum(C3{})第三步:HYPERLINK美化外观第四步:HYPERLINK保存预览第五步:HYPERLINK发布报表美化外观包括调整表格大小、字体颜色及大小、背景色、增加边框等。● Sum单元格函数说明函数说明:对可扩展单元格或集合表达式进行求和语法:sum(expression) sum(cellExp,exp)参数说明:expression需要被求和的单元格或表达式,一般为可扩展单元格或集合表达式cellExp单元格或单元格集合,以cellExp里的单元格为当前格计算表达式expexp表达式返回值:实数或者字符型,由被汇总的单元格数据类型决定示例:例1:sum(A1:A10)求出单元格A1至A10的合计值,被统计单元格可以是数值型也可以是字符型例2:sum(arg1)其中arg1是参数组,求出arg1中所有元素的合计值例3:sum(B1{})表示求得当前主格扩展区域内所有扩展后的B1单元格的合计值例4:sum(B1[`0]{})表示求得根坐标下所有扩展后的B1单元格的合计值例5:sum(A1[`0]{},B1+C1)计算分别与每个A1相对应的B1、C1的和的合计值汇总规则 默认汇总规则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论