集算报表与润乾报表的函数语法对比
FineReport V7.0与润乾报表 V4.5的对比
FineReport与润乾报表的产品对比润乾报表和FineReport报表软件均为纯JAVA的企业级Web报表设计工具,两者都是国内优秀的报表解决方案供应商。
下面笔者从多个角度来综合对比润乾和FineReport报表,进而客观的评价两者的优劣。
为了写作方便,本文用FR表示FineReport,用RQ表示润乾报表。
第一章实用性报表软件从本质上来讲,属于网页制作工具的一种,最终目的是从原始数据中抽取预定义的信息,经过报表服务器的分析运算后,将结果展示到浏览器中。
报表软件的出现,使得用代码才能实现的报表,只需要通过报表软件的可视化设计,简单操作即可实现。
报表软件是社会科技发展和专业化分工的必然产物,它大大缩短了信息管理系统的开发周期,丰富了系统数据展示的方式,提高了信息管理系统的质量,降低了系统维护的难度,从而为企业赢得更多的利润和口碑。
正是因为“缩短项目开发周期”和“降低系统维护难度”这一专业化的分工定位,“产品易用”、“产品好用”和“学习成本低”,也就是“产品实用”对报表软件显得格外重要,这也渐渐成为衡量一款报表软件领先与否的关键因素。
一、设计器UI设计器UI(设计器的用户体验),是用户在使用产品中建立起来的主观感受,注重实际应用效率和舒适的报表设计体验。
1、设计器界面FR:采用类excel的设计模式,有着无限行无限列的报表设计区域。
设计器充分尊重用户的软件操作习惯,采用“左-中-右”的界面布局,左边是数据操作类面板,中间是报表设计区,右边是外部属性和内容设计面板。
设计器将参数设计面板和报表设计面板相统一,用户可以在全局上设计报表,提高报表的美观程度,还一定程度上加快报表的设计速度。
对最常用到的“新建、保存、后退、前进、报表预览”的功能按钮进行了放大,方便用户快速识别和点击。
设计器界面去掉了一些炫目的色彩,更多使用稳重低调的商务灰,这样的色彩设置可以集中用户的注意力,更加专注于当前的这一张报表的设计。
润乾报表常用函数
润乾报表常用函数1.to函数说明:生成一组连续的整数数据语法: to(startE xp,endExp{,stepEx p})参数说明:startE xp 整数数据开始的表达式endExp整数数据结束的表达式stepEx p 整数数据步长的表达式函数示例: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)2.select函数说明:从数据集的当前行集中选取符合条件的记录语法:datase tName.select( <select_exp>{, desc_e xp{, filter_exp{,sort_e xp{,rootGr oupEx p}}}} )datase tName.select( <select_exp>, , <filter_exp> )//适用于不需排序或数据集中已排好序参数说明:select_exp:要选择的字段列名/列号,,也可以是表达式。
列号用#n 表示,例如#0代表第0列,#1代表第1列,依此类推desc_e xp: 指定数据排序的顺序,true表示降序排列,false表示升序排列。
filter_exp:数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。
sort_e xp: 数据排序表达式。
当此项为空时先检查de sc_ex p是否为空,如果为空,则不排序,否则使用se lect_exp排序。
rootGr oupEx p 是否root数据集表达式返回值:一组数据的集合,数据类型由s elect_exp的运算结果决定函数示例:例1:ds1.select( name ) 从数据源ds1中选取n ame字段列的所有值, 不排序例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字段降序排列3.Int函数说明:将字符串或数字转换成整数语法: int( string ) int( number )参数说明:string需要转换的字符串表达式number数字,如果带有小数位,转换后小数位被截掉返回值:32位整数示例:例1:int( "100" ) 返回:100例2:int( 100.1 ) 返回:100例3:int(100.9999) 返回:1004.map函数说明显示值对照表函数,从对照表中找出当前单元格对应值的显示值,没有则返回n ull语法: map(valueL istEx p, displa yList Exp)参数说明:valueL istEx p 真实值列表,可以是可扩展单元格或结果为集合列表的表达式displa yList Exp 显示值列表,可以是可扩展单元格或结果为集合列表的表达式真实值列表和显示值列表一一对应返回值:字符型,和当前格真实值对应的显示值示例:例1:map(to(1,3),list("男","女","不定"))例2:map(arg1,arg2) 其中arg1为1,2,3组成的参数组,arg2为"男","女","不定"组成的字符串组例3:map(list(1,2,3),list("男","女","不定"))5.Select1函数说明:从数据集中按顺序检索到符合过滤条件的第一条记录,返回其sel ectEx p值语法: datase tName.select1(select Exp{,filter Exp{,rootGr oupEx p}})参数说明: select Exp 要选择的字段列名/列号,,也可以是表达式。
润乾报表常用函数
润乾常用函数数值计算函数说明:abs(numberExp)计算参数的绝对值语法:abs(numberExp)参数说明:numberExp 待计算绝对值的数据返回值:数值型示例:例1:abs(-3245.54) 返回:3245.54例2:abs(-987) 返回:987函数说明:cos(numberExp)计算参数的余弦值,其中参数以弧度为单位相关的函数有sin() 计算参数的正弦值tan() 计算参数的正切值语法:cos(numberExp)参数说明:numberExp 待计算余弦值的弧度数返回值:double型示例:例1:cos(pi()) 返回:-1例2:cos(pi(2)) 返回:1函数说明:eval( StringExp )动态解析并计算表达式语法:eval( StringExp )eval( StringExp, SubRptExp )eval( StringExp, DataSetExp )参数说明:StringExp 待计算的表达式串SubRptExp 嵌入式子报表对象,一般是含有子报表的单元格DataSetExp 数据集对象,一般是ds函数返回值:表达式的结果值,数据类型由表达式决定示例:例1:eval( "1+5" ) 返回6例2:eval("B2+10", A1) 其中A1为嵌入式子报表,表示计算A1子报表中的B2+10 例3:eval("salary+100", ds("ds1")) 表示计算数据集ds1中salary加100函数说明:exp(nExp)计算e的n次幂语法:exp(nExp)参数说明:nExp 指定次幂数返回值:数值型示例:例1:exp(4.3) 返回:73.69979369959579函数说明:fact(nExp)计算参数的阶乘语法:fact(nExp)参数说明:nExp 待计算阶乘的数据返回值:长整数(64位)示例:例1:fact(10) 返回:3628800函数说明:fill(s, n)获得n个s拼成的字符串相关函数:space() 产生一个空串语法:fill(s, n)参数说明:s 用于拼成新串的源串n 新串中包含源串的个数返回值:字符型示例:例1:fill("1 ",10) 返回:"1 1 1 1 1 1 1 1 1 1 "例2:fill("a b",10) 返回:"a ba ba ba ba ba ba ba ba ba b"函数说明:fl oat(string)将单精度浮点数、双精度浮点数、字符串转换为32位的单精度浮点型语法:float(string)float(number)参数说明:string 需要转换的单精度浮点数、双精度浮点数表达式number 数字返回值:32位的单精度浮点数示例:例1:float("1234567") 返回:1234567.0例2:float(1234567.0) 返回:1234567.0例3:float(1234567) 表达式提示错误,因为1234567不是浮点数函数说明:fl oor(numberExp, {nExp})对数据在指定位置上进行截取,剩余部分只要有值全舍去相关的函数有:ceil:对数据在指定位置上进行截取,剩余部分只要有值就进位round:对数据在指定位置上进行截取,剩余部分四舍五入语法:floor(numberExp, {nExp})参数说明:numberExp 需要进行截取的数据nExp 整数,用于指定需要进行截取的位置,>0:从小数点往右位移nExp个位数,<0:从小数点往左移nExp个位数=0:表示当前小数点的位置返回值:数值型示例:例1:=floor(3451231.234,0) 返回:3451231.0例2:=floor(3451231.234,-1) 返回:3451230.0例3:=floor(3451231.234,-2) 返回:3451200.0例4:=floor(3451231.234,1) 返回:3451231.2例5:=floor(3451231.234,2) 返回:3451231.23涵数说明:log(numberExp)计算参数的自然对数相关函数:log10() 计算以10为底的对数语法:log(numberExp参数说明:numberExp 需要计算自然对数的数据返回值:数值型示例:例1:log(54) 返回:3.9889840465642745 函数说明:log10(numberExp)计算以10为底的对数相关函数:log() 计算自然对数语法:log10(numberExp)参数说明:numberExp 需要计算以10为底的对数的数据返回值:数值型示例:例1:log10(54) 返回:1.7323937598229684 函数说明:pi(numberExp)计算圆周率及其倍数语法:pi(numberExp)参数说明:numberExp 倍数,此参数省略,则返回圆周率返回值:圆周率及其倍数示例:例1:pi() 返回:3.141592653589793例2:pi(2) 返回:6.283185307179586函数说明:pow(xExp, nExp)计算x的n次幂语法:pow(xExp, nExp)参数说明:xExp 底数nExp 次幂示例:例1:pow(2,4) 返回:16.0函数说明:round(numberExp, {nExp})对数据在指定位置上进行截取,剩余部分四舍五入相关的函数有:ceil:对数据在指定位置上进行截取,剩余部分只要有值就进位floor:对数据在指定位置上进行截取,剩余部分只要有值全舍去语法:round(numberExp, {nExp})参数说明:numberExp 需要进行截取的数据nExp 整数,用于指定需要进行截取的位置,>0:从小数点往右位移nExp个位数,<0:从小数点往左移nExp个位数=0:表示当前小数点的位置返回值:数值型示例:例1:=round(3451251.274,0) 返回:3451251.0例2:=round(3451251.274,-1) 返回:3451250.0例3:=round(3451251.274,-2) 返回:3451300.0例4:=round(3451251.274,1) 返回:3451251.3例5:=round(3451251.274,2) 返回:3451251.27函数说明:sin(number)计算参数的正弦值,其中参数以弧度为单位相关的函数有cos() 计算参数的余弦值tan() 计算参数的正切值语法:sin(number)参数说明:number 需要计算正弦值的弧度数示例:例1:sin(pi()) 返回:1.2246467991473532E-16例2:sin(pi(2)) 返回:-2.4492935982947064E-16 例3:sin(pi()/2) 返回:1.0函数说明:sqrt(number)计算平方根语法:sqrt(number)参数说明:number 需要计算平方根的数据返回值:数值型示例:例1:sqrt(100) 返回:10.0例2:sqrt(99) 返回:9.9498743710662函数说明:tan(number)计算参数的正切值,其中参数以弧度为单位相关的函数有sin() 计算参数的正弦值cos() 计算参数的余弦值语法:tan(number)参数说明:需要计算正切值的弧度数返回值:double型示例:例1:tan(pi()/2) 返回:1.633123935319537E16例2:tan(pi(2)) 返回:-2.4492935982947064E-16函数说明:sum(expression)对可扩展单元格或集合表达式进行求和语法:sum(expression)sum(cellExp,exp)参数说明:expression 需要被求和的单元格或表达式,一般为可扩展单元格或集合表达式 cellExp 单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp exp 表达式返回值:实数或者字符型,由被汇总的单元格数据类型决定示例:例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的和的合计值日期函数说明:age(dateExp{,typeExp})计算从参数定义的时间到当前间隔的整年数语法:age(dateExp{,typeExp})age(stringExp,formatExp{,typeExp})参数说明:dateExp 日期型表达式,运算的结果是日期型(Date)stringExp 表达式,其结果必须为日期或中国日期时间格式的字符串formatExp 格式化表达式比如"yyyyMMdd","yyyy-MM-dd"等typeExp 计算精确的最小单位1为日,2为月,3为年,缺省为日返回值:整数示例:假设今天为2007.1.1例1:age(datetime2("19800227","yyyyMMdd")) 结果为26例3:age("19800227","yyyyMMdd",3) 结果为27函数说明:date(stringExp)将字符串转换成日期型数据语法:date(stringExp)参数说明:stringExp 字符串表达式,其结果必须返回合法日期格式的字符串要求格式为yyyy-MM-dd,不含时间,如果含了时间,时间部分不转换返回值:日期时间型,但是时间部分都为00:00:00示例:例1:date("1982-08-09") 返回日期:1982-08-09 00:00:00例2:date("1982-08-09 10:20:30") 返回日期:1982-08-09 00:00:00函数说明:dateTime(string)将字符串或长整数转换成日期时间语法:dateTime(string)dateTime(long)参数说明:string 格式为yyyy-MM-dd HH:mm:ss的字符串long 以微秒计的长整数返回值:日期时间示例:例1:dateTime("2006-01-01 10:20:30") 返回:2006-01-01 10:20:30例2:dateTime("2006-01-01 10:20:30:111") 返回:2006-01-01 10:20:30例3:dateTime(12345) 返回:1970-01-01 08:00:12函数说明:datetime2(string, format)将各种格式的日期字符串转换成日期时间型数据,转换时可以指定字符串的当前格式语法:datetime2(string, format)参数说明:string 各种格式的日期字符串format 用于说明参数1的格式串返回值:日期时间型数据示例:例1:datetime2("12/28/1972","MM/dd/yyyy") 返回:1972-12-28 00:00:00 例2:datetime2("12/28/1972 10:23:43","MM/dd/yyyy hh:mm:ss") 返回:1972-12-28 10:23:43例3:datetime2("19800227","yyyyMMdd") 返回:1980-02-27 00:00:00 例4:datetime2("1982年12月30日","yyyy年MM月dd日") 返回:1982-12-30 00:00:00函数说明:day(dateExp)从日期型数据中获得该日在本月中是几号语法:day(dateExp)参数说明:dateExp 表达式,其结果必须为日期或中国日期时间格式的字符串返回值:整数示例:例1:day(datetime2("19800227","yyyyMMdd")) 返回:27例2:day(dateTime(12345)) 返回:1例3:day(dateTime("2006-01-15 10:20:30")) 返回:15函数说明:dayName(dateExp)从日期型数据中获得该日的星期名称语法:dayName(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:字符型示例:例1:dayName(datetime2("19800227","yyyyMMdd")) 返回:星期三例2:dayName(dateTime(12345)) 返回:星期四例3:dayName(dateTime("2006-01-15 10:20:30")) 返回:星期日例4:dayName("12:14:34") 返回:星期四例5:dayName("1972-11-08") 返回:星期三例6:dayName("1972-11-08 10:20:30") 返回:星期三函数说明:dayNo(dateExp)从日期型数据中,获得该日位于一个星期中的第几天,星期天返回1,星期一返回2,依此类推语法:dayNo(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:整数示例:例1:dayNo(dateTime2("19800227","yyyyMMdd")) 返回:4例2:dayNo(dateTime("2006-01-15 10:20:30")) 返回:1例3:dayNo("1972-11-08 10:20:30") 返回:4函数说明:daysAfter(dateExp1, dateExp2)计算两个日期型数据相差几天语法:daysAfter(dateExp1, dateExp2参数说明:dateExp1 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss dateExp2 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss 返回值:整数示例:例1:daysAfter(dateTime("1983-12-15 10:20:30"),datetime2("1982年12月30日","yyyy年MM月dd日"))返回:-350例2:daysAfter("1983-12-15 10:20:30","1982-12-30") 返回:-350函数说明:daysInMonth(dateExp)获得指定日期所在月的天数语法:daysInMonth(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss 返回值:整数示例:例1:daysInMonth(datetime2("19800227","yyyyMMdd")) 返回:29例2:daysInMonth("1972-11-08 10:20:30") 返回:30例3:daysInMonth(dateTime("2006-01-15 10:20:30")) 返回:31函数说明:daysInYear(dateExp)获得指定日期所在年或者指定年份的天数语法:daysInYear(dateExp)daysInYear(year)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ssyear 返回整数的表达式返回值:整数示例:例1:daysInYear(datetime2("19800227","yyyyMMdd")) 返回:366 例2:daysInYear(dateTime("2006-01-15 10:20:30")) 返回:365例3:daysInYear("1972-11-08 10:20:30") 返回:366例4:daysInYear(2006) 返回:365函数说明:hour(datetimeExp)从日期时间型数据中,获得当前时间位于一天中的第几个时辰语法:hour(datetimeExp)参数说明:datetimeExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss 返回值:整数示例:例1:hour("1983-12-15") 返回:0例2:hour("1983-12-15 10:30:25") 返回:10例3:hour(dateTime("2006-01-15 13:20:30")) 返回:13函数说明:lastday(dateExp)获得指定日期的上一天语法:lastday(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:日期时间型示例:例1:lastday("1972-11-08 10:20:30") 返回:1972-11-07 10:20:30例2:lastday(datetime2("19800227","yyyyMMdd")) 返回:1980-02-26 00:00:00 例3:lastday(dateTime("2006-01-15 10:20:30")) 返回:2006-01-14 10:20:30函数说明:lastmonth( dateExp )取得指定日期在上月的同日,若无同一日,则返回上月月末语法:lastmonth( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:日期时间型示例:例1:lastmonth(datetime2("19800227","yyyyMMdd")) 返回:1980-01-27 00:00:00 例2:lastmonth("1972-11-08 10:20:30") 返回:1972-10-08 10:20:30例3:lastmonth(dateTime("2006-01-15 10:20:30")) 返回:2005-12-15 10:20:30函数说明:lastyear( dateExp )取得指定日期在去年的同月同日,若无同月同日,则返回去年同月最后一天语法:lastyear( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:日期时间型示例:例1:lastyear(datetime2("19800227","yyyyMMdd")) 返回:1979-02-27 00:00:00 例2:lastyear("1972-11-08 10:20:30") 返回:1971-11-08 10:20:30例3:lastyear(dateTime("2006-01-15 10:20:30")) 返回:2005-01-15 10:20:30函数说明:minute(datetimeExp)从日期时间型数据中,获得分钟的信息语法:minute(datetimeExp)参数说明:datetimeExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:minute(datetime2("19800227","yyyyMMdd")) 返回:0例2:minute("1972-11-08 10:20:30") 返回:20例3:minute(dateTime("2006-01-15 13:20:30")) 返回:20函数说明:month(dateExp)取得指定日期所在的月份语法:month(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:month(datetime2("19800227","yyyyMMdd")) 返回:2例2:month("1972-11-08 10:20:30") 返回:11例3:month(dateTime("2006-01-15 13:20:30")) 返回:1函数说明:monthbegin( dateExp )取得指定日期所在月的月首语法:monthbegin( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间型示例:例1:monthbegin(datetime2("19800227","yyyyMMdd")) 返回:1980-02-0100:00:00例2:monthbegin("1972-11-08 10:20:30") 返回:1972-11-01 10:20:30例3:monthbegin(dateTime("2006-01-15 13:20:30")) 返回:2006-01-01 13:20:30 函数说明:monthend( dateExp )取得指定日期所在月的月末语法:monthend( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间型示例:例1:monthend(datetime2("19800227","yyyyMMdd")) 返回:1980-02-29 00:00:00 例2:monthend("1972-11-08 10:20:30") 返回:1972-11-30 10:20:30例3:monthend(dateTime("2006-01-15 13:20:30")) 返回:2006-01-31 13:20:30 函数说明:now()获得系统此刻的日期时间语法:now()返回值:日期时间函数说明:quaterbegin( dateExp )取得指定日期所在季度的首日语法:quaterbegin( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss\ 返回值:日期时间\示例:例1:quaterbegin(datetime2("19800227","yyyyMMdd")) 返回:1980-01-0100:00:00\例2:quaterbegin("1972-11-08 10:20:30") 返回:1972-10-01 10:20:30\例3:quaterbegin(dateTime("2006-01-15 13:20:30")) 返回:2006-01-01 13:20:30\ 函数说明:quaterend( dateExp )取得指定日期所在季度的末日语法:quaterend( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间示例:例1:quaterend(datetime2("19800227","yyyyMMdd")) 返回:1980-03-31 00:00:00 例2:quaterend("1972-11-08 10:20:30") 返回:1972-12-31 10:20:30例3:quaterend(dateTime("2006-01-15 13:20:30")) 返回:2006-03-31 13:20:30 函数说明:relDate(dateExp, nExp)从给定的日期型数据中,算出相差n天后的新的日期数据语法:relDate(dateExp, nExp)参数说明:dateExp 给定的起始日期表达式,其结果必须为日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss nExp 整数表达式,需要求得nExp天后的新日期返回值:日期时间示例:例1:relDate(datetime2("19800227","yyyyMMdd"),5) 返回:1980-03-03 00:00:00 例2:relDate("1972-11-08 10:20:30",-10) 返回:1972-10-29 10:20:30例3:relDate(dateTime("2006-01-15 13:20:30"),15) 返回:2006-01-30 13:20:30函数说明:relTime(datetimeExp, nExp)从给定的日期时间型数据中,算出相差n秒后的新的日期时间数据语法:relTime(datetimeExp, nExp)参数说明:datetimeExp 给定的起始日期表达式,其结果必须为日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss nExp 整数表达式,需要求得nExp秒后的新日期时间返回值:日期时间示例:例1:relTime(datetime2("19800227","yyyyMMdd"),5) 返回:1980-02-27 00:00:05 例2:relTime("1972-11-08 10:20:30",-10) 返回:1972-11-08 10:20:20例3:relTime(dateTime("2006-01-15 13:20:30"),15) 返回:2006-01-15 13:20:45 函数说明:second(datetimeExp)从日期时间型数据中,获得秒信息语法:second(datetimeExp)参数说明:datetimeExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:second(datetime2("19800227","yyyyMMdd")) 返回:0例2:second("1972-11-08 10:20:30") 返回:30例3:second(dateTime("2006-01-15 13:20:45")) 返回:45函数说明:secondsAfter(datetimeExp1,datetimeExp2)计算两个日期时间型数据相差几秒语法:secondsAfter(datetimeExp1,datetimeExp2)参数说明:datetimeExp1 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss datetimeExp2 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:secondsAfter(datetime2("19800227","yyyyMMdd"),dateTime("1980-02-27 00:00:45")) 返回:45例2:secondsAfter("1972-11-08 10:20:30","1972-11-08 10:30:50") 返回:620函数说明:time(stringExp)将字符串转换成时间型数据语法:time(stringExp)参数说明:stringExp HH:mm:ss格式的字符串返回值:时间型数据示例:函数说明:weekbegin(dateExp)获得指定日期所在星期的星期天,这里认定星期天为一周的开始语法:weekbegin(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间型示例:例1:weekbegin(datetime2("19800227","yyyyMMdd")) 返回:1980-02-24 00:00:00 例2:weekbegin("1972-11-08 10:20:30") 返回:1972-11-05 10:20:30例3:weekbegin(dateTime("2006-01-15 13:20:45")) 返回:2006-01-15 13:20:45 函数说明:weekend(dateExp)获得指定日期所在星期的星期六,这里认定星期六为一周的结束语法:weekend(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间型示例:例1:weekend(datetime2("19800227","yyyyMMdd")) 返回:1980-03-01 00:00:00 例2:weekend("1972-11-08 10:20:30") 返回:1972-11-11 10:20:30例3:weekend(dateTime("2006-01-15 13:20:45")) 返回:2006-01-21 13:20:45 函数说明:year(dateExp)从日期型数据中获得年信息语法:year(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:year(datetime2("19800227","yyyyMMdd")) 返回:1980例2:year("1972-11-08 10:20:30") 返回:1972例3:year(dateTime("2006-01-15 13:20:45")) 返回:2006字符串函数说明:asc( string{, nPos} )取字符串指定位置的字符的unicode值,如果是ascii字符则返回ascii码(一般来说,英文字符及其扩展字符都是ascii字符,中文、日文、韩文等亚洲字符都是unicode字符,ascii字符为8位,unicode字符为16位(其中有3位用于标志字符类型))相关函数:char() 根据给定的unicode编码或者ascii码取得其对应的字符语法:asc( string{, nPos} )参数说明:string 给定的字符串nPos 整数表达式,缺省为0返回值:整数示例:例1:=asc("def") 返回:100 (ascii)例2:=asc("def",1) 返回:101 (ascii)例3:=asc("中国") 返回:20013 (unicode)例4:=asc("中国",1) 返回:22269 (unicode)函数说明:d eicmal(stringExp)将字符串或数字型数值转换成大浮点数语法:deicmal(stringExp)decimal(numberExp)参数说明:stringExp 给定数字串,可含小数点numberExp 数值,只能少于等于64位,超过64位就要用字符串返回值:大浮点数BigDecimal示例:例1:decimal("123456789012345678901234567890") 返回:123456789012345678901234567890例2:decimal(1234567890123456) 返回:1234567890123456(BigDecimal 类型)函数说明:left(string, n)获得源字符串左边的子串相关函数:mid() 获得源字符串中间的子串right() 获得源字符串右边的子串语法:left(string, n)参数说明:string 获得子串的源串n 获得子串的长度返回值:字符型示例:例1:left("abcdefg",3) 返回:"abc"函数说明:len(s)计算字符串的长度语法:len(s)参数说明:s 待计算长度的字符串返回值:整数示例:例1:len("adfg") 返回:4例2:len(" abd ") 返回:7函数说明:long( string )将字符串或数字转换成64位长整数语法:long( string )long( number )参数说明:string 需要转换的字符串表达式number 数字,如果带有小数,则小数部分被截掉返回值:64位长整数示例:例1:long("1234567") 返回:1234567例2:long(1234567.789) 返回:1234567函数说明:lower(s)将字符串转成小写相关函数:upper() 把字符串转成大写word_cap() 将字符串每一个单词的首字母大写语法:lower(s)参数说明:s 待转成小写的字符串返回值:字符型示例:例1:lower("ABCdef") 返回:"abcdef"例2:lower("defABC") 返回:"defabc"函数说明:ltrim(s)去掉字符串左边的空格相关函数:rrim() 去掉字符串右边的空格trim() 去掉字符串左右的空串语法:ltrim(s)参数说明:s 准备去掉左边空格的源串返回值:字符串型示例:例1:ltrim(" abc def ") 返回:"abc def "例2:ltrim("def abc ") 返回:"def abc "函数说明:maxwidth()求当前列中所有非合并格的显示串的最大字符长度(注意:ASCII码大于255的字符长度为2)语法说明:maxwidth()返回值:整数示例:一般用于列首格中,动态控制列宽例1:在列首格的单元格宽属性中写入8*maxwidth(),表示动态调整当前列宽为单元格显示值最大字符长度*8个像素函数说明:mid(s, start{, end})返回字符串的子串相关函数:left() 获得源字符串左边的子串right() 获得源字符串右边的子串语法:mid(s, start{, end})参数说明:s 待获得子串的源串start 获得子串的起始位置end 获得子串的结束位置,缺省为源串的长度返回值:字符串型示例:例1:mid("abcde",0) 返回:abcde例2:mid("abcde",1,2) 返回:b例3:mid("abcde",3) 返回:de函数说明:pos(s1, s2{, begin})查找母串中子串的位置语法:pos(s1, s2{, begin})参数说明:s1 待查找子串的母串s2 被查找的子串begin 查找的起始位置,缺省为0 返回值:整数示例:例1:pos("abcdef","def") 返回:3例2:pos("abcdefdef","def",5) 返回:6函数说明:right(s, n)获得字符串右边的子串相关函数:left() 获得源字符串左边的子串mid() 获得源字符串中间的子串语法:right(s, n)参数说明:s 待获得子串的源串n 获得子串的长度返回值:字符串型示例:例1:right("abced",2) 返回:"ed"函数说明:rmQuote(exp)删除表达式里的引号,包括单引号和双引号语法:rmQuote(exp)参数说明:exp 表达式返回值:字符串函数说明:rplc( srcExp,subStrA,rplcStrB{,boolExp})将字符串src的子字符串a变为字符串b,语法:rplc( srcExp,subStrA,rplcStrB{,boolExp})参数说明:srcExp 源字符串subStrA 源字符串的子字符串rplcStrB 将要替换成的字符串boolExp 引号里的字符是否需要变换,缺省为true返回值:替换后的字符串示例:例1:rplc("abc'abc'def","a","中国") 返回:"中国bc'中国bc'def"例2:rplc("abc'abc'def","a","中国",false) 返回:"中国bc'abc'def"例3:rplc("abc'abc'def","a","中国",true) 返回:"中国bc'中国bc'def"函数说明:rtrim(s)去掉字符串右边的空格相关函数:ltrim() 去掉字符串左边的空格trim() 去掉字符串左右的空串语法:rtrim(s)参数说明:s 准备去掉右边空格的源串返回值:字符串型示例:例1:rtrim(" abc def ") 返回:" abc def"例2:rtrim("def abc ") 返回:"def abc"函数说明:space(n)产生一个空串相关函数:fill() 获得n个s拼成的字符串语法:space(n)参数说明:n 生成空串的长度返回值:字符串型,获得n个空格拼成的字符串示例:例1:space(5) 返回:" "函数说明:split( srcExp,sepExp{,boolExp})将字符串按分割符分割成多个子串语法:split( srcExp,sepExp{,boolExp})参数说明:srcExp 待分割的字符串表达式sepExp 分隔符表达式boolExp bool型,是否解析引号、括号里的分隔符,为true时解析,为false时不解析,缺省为false返回值:分割后的字符串列表示例:例1:=split("ab;cd;ef;tg;tt",";") 返回数组:["ab","cd","ef","tg","tt"]例2:=split("ab;c'd;e'f;tg;tt",";",false) 返回数组:["ab","c'd;e'f","tg","tt"]不解析引号里的分隔符例3:=split("ab;c[d;e]f;tg;tt",";",false) 返回数组:["ab","c[d;e]f","tg","tt"]不解析括号里的分隔符例4:=split("ab;c'd;e'f;tg;tt",";",true) 返回数组:["ab","c'd","e'f","tg","tt"]解析引号里的分隔符例5:=split("ab;c[d;e]f;tg;tt",";",true) 返回数组:["ab","c[d","e]f","tg","tt"]解析括号里的分隔符函数说明:trim(s)去掉字符串左右的空串相关函数:right_trim() 去掉字符串右边的空格left_trim() 去掉字符串左边的空格语法:trim(s)参数说明:s 待去掉左右空串的源串返回值:字符串型示例:例1:trim(" abc ") 返回:"abc"例2:trim(" a bc ") 返回:"a bc"函数说明:upper(s)把字符串转成大写相关函数:lower() 把字符串转成小写word_cap() 将字符串每一个单词的首字母大写语法:upper(s)参数说明:s 待转成大写的源串返回值:字符串型示例:例1:upper("ABCdef") 返回:"ABCDEF"例2:upper("abcDEF") 返回:"ABCDEF"函数说明:wordCap(s)将字符串每一个单词的首字母大写相关函数:upper() 把字符串转成大写lower() 把字符串转成小写语法:wordCap(s)参数说明:s 需要将单词首字母大写的源串返回值:字符串型示例:例1:wordCap("I love my country") 返回:"I Love My Country"例2:wordCap("she is beautiful") 返回:"She Is Beautiful"单元格函数说明:avg(expression{,containNull})对可扩展单元格或集合表达式求平均值语法:avg(expression{,containNull})average(expression{,containNull})参数说明:expression 需要求平均值的单元格或表达式,一般为可扩展单元格或集合表达式containNull 是否对null元素进行计数返回值:实数示例:例1:avg(A1:B10) 求得A1至B10之间单元格的平均值,注意是以当前格为基格计算A1和B10例2:avg(arg1) 其中arg1是整数组,表示求得arg1中所有数据的平均值例3:avg(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的平均值例4:avg(B1{`0}{}) 表示求得根坐标下所有扩展后的B1单元格的平均值例5:avg(list(2,4,null),false)返回3,如果containNull为true或缺省则返回2函数说明:avg2(cellExp,exp{,containNull})以指定单元格集的元素为基格计算表达式求平均值语法:avg2(cellExp,exp{,containNull})参数说明:cellExp 单元格或单元格集合,以cellExp里的单元格为当前格计算表达式expexp 表达式containNull 是否对null元素进行计数返回值:实数示例:例1:avg2(A1[`0]{},B1+C1) 计算分别与每个A1相对应的B1、C1的和的平均值函数说明:call(sqlStatement{,arg1{,arg2{,arg3{,……}}}})执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个字段,则返回第一个字段的结果值语法:call(sqlStatement{,arg1{,arg2{,arg3{,……}}}})参数说明:sqlStatement 合法的调用存储过程的sql语句arg(n) sql语句的参数,可以是常数也可以是表达式,如果是输出结果集的参数,对应的参数表达式写成"@@result"返回值:一组数据的集合,由结果集的第一个字段决定数据类型,如果结果集是多列,只返回第一列示例:例1:call("{call ResultSet (?,?,?)}","@@result","000001",A2)表示执行存储过程ResultSet,第一个输出参数输出结果集,第二、三个参数传入"000001",A2作为参数值函数说明:call(dbName,sqlStatement{,arg1{,arg2{,arg3{,……}}}})除第一个参数为数据源连接外,其他参数可call()函数相同,功能也和call()函数相同,通过第一个参数,可以实现不同的单元格连接不同的数据源。
集算报表
集算报表:报表工具的二次革命计算引擎产生背景报表工具是润乾的主打产品,我们在这方面积累了丰富的经验,当然,也有教训。
现代的报表工具主要解决两个环节的问题:一方面是呈现,也就是把数据以表格或图形的方式展现出来;另一方面是数据计算,即计算出源数据中没有和不能直接呈现的数据,比如一些公式格、分组汇总排序等等。
这里说的报表,主要是指用户事先确定好格式和数据运算规则的报表,我们俗称为固定报表。
自助报表,也就是业务用户可以自己简单拖拽可以完成的报表,不在此类。
自助报表的话题我们会专门再讲。
十年前润乾首先提出了非线性报表模型,带来了报表工具的第一次革命。
这个模型从根本上解决了报表(特别是中国式报表)的复杂格式以及表内的计算问题,以此模型的润乾报表也因此取得了一定的成功,现在这个模型已经成为报表工具的标准了。
但是,有了这样的报表工具,报表开发是否就很好做了?“并不是!”报表工具常常会宣称自己支持“零编码开发报表”,润乾报表当然也不例外地喊过这个口号,但要认真分析下来,这是一句空话。
为什么呢?我们发现,数据库中的原始数据有时并不能直接用作报表工具的数据源去呈现,而需要一系列运算转换过程,有的过程还非常复杂。
有报表开发经验程序员都知道,为报表编写复杂SQL是经常的事,存储过程以及事先准备的中间数据也是家常便饭,有时SQL和存储过程不好写的运算还需要采用自定义数据源即JAVA程序来处理。
总之都需要大量的程序编码。
虽然大部分报表还是相对简单的,这类复杂报表总数上并不算多,但其占用的开发工作量却会占绝对的大头,开发10个用报表工具能直接完成的简单报表所用的时间可能也做不了一个需要编码才能准备好数据的报表。
那么,提升报表工具的计算能力可否解决这个问题吗?广义地说是可以的,这就是集算器的产生背景。
但是,由于数据量和数据转换具有分步性的特征,而报表工具在呈现环节的计算一般都是状态式和全内存方式,这样,无论在容量和复杂度方面都只能是很少部分地缓解这个问题而已,即使是润乾报表这样以计算能力为核心优势的报表工具也不行,数据源开发工作量依然很大,这也是我们这些年的经验。
集算报表与润乾报表的函数语法对比
集算报表与润乾报表的函数语法对比集算报表5.0在保留润乾报表V4.x的核心功能外,进行了优化和精简,其中报表函数也做了适当优化,这里就常见计算来比较一下二者函数语法之间的差异。
对比函数一览表1数据集函数1.1d s.group()润乾报表:datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGr oupExp}}}}}})集算报表:datasetName.group(<selectExp>{,filter_exp};{sort1}{:order1},…;{ groupSortExp }:{ groupOrderExp })选项:@r 是否root数据集表达式主要改变:1、增加@r函数选项,取代原rootGroupExp表达式参数2、取消分组前记录的排序顺序descExp参数3、更改排序表达式和排序顺序参数语法举例:1.2d s.select()/ds.select1()润乾报表:datasetName.select( <select_exp>{, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} ) datasetName.select1(selectExp{,filterExp{,rootGroupExp}})集算报表:将原ds.select()和ds.select1()合并为ds.select()语法如下datasetName.select(<select_exp>{: order_exp},{ filter_exp },{num_exp},{distinct_exp})选项:@r 是否root数据集表达式主要改变:1、增加@r函数选项,取代原rootGroupExp表达式参数2、取消数据的排序顺序descExp参数3、更改排序顺序参数语法举例:1.3d s.sum()润乾报表:datasetName.sum(selectExp{,filterExp{,rootGroupExp}})集算报表:datasetName.sum(selectExp{,filterExp})选项:@r 是否root数据集表达式主要改变:1、增加@r函数选项,取代原rootGroupExp表达式参数举例:2单元格函数2.1c all()/call2()润乾报表:call(sqlStatement{,arg1{,arg2{,arg3{,……}}}})call(dbName,sqlStatement{,arg1{,arg2{,arg3{,……}}}})集算报表:将原call()和call2()合并为call(),语法如下call(sqlStatement{,arg1{,arg2{,arg3{,……}}}}{;dbName})主要改变:1、数据源参数顺序改变,并作为可选参数举例:2.2i f()润乾报表:if(boolExp1,valueExp1{,boolExp2,valueExp2 {,boolExp3,valueExp3 {, {defaultExp}}}})集算报表:if(x1:y1,…,xk:yk;y)主要改变:1、函数参数分隔符变化举例:2.3n vl()润乾报表:nvl( valueExp1, valueExp2 )集算报表:ifn( valueExp1, valueExp2 )主要改变:1、函数名称变化举例:2.4s um()润乾报表:sum(expression)sum(cellExp,exp)集算报表:sum(expression)sum(cellExp,exp)主要改变:无举例:2.5v alue()表示当前单元格的值,集算报表与润乾报表用法相同,没有改变。
润乾报表函数
润乾报表函数个人中心我的主页好友消息站内消息:无新消息提醒互动请求:2条新系统通知:5条新zln 米老鼠|装扮|设置| 退出糍糍1025的空间主页博客相册|个人档案|好友|i贴吧查看文章润乾报表函数2 转2011-09-05 16:55 函数说明:根据第一个表达式的值是否为空,若为空则返回指定值语法:nvl( valueExp1, valueExp2 )参数说明:valueExp1 需要计算的表达式,其结果不为空时返回其值valueExp2 需要计算的表达式,当valueExp1结果为空时返回此值返回值:valueExp1或valueExp2的结果值示例:例1:nvl(A1,"") 表示当A1为空时,返回空串,否则返回A1例2:nvl(value(),0) 表示当当前格为空时返回0,否则返回当前格的值函数说明:计算分页后的当前页中所有的单元格(cellExp)的个数,注意,本函数只是在分页后才有效语法:pccount({cellExp})参数说明:cellExp 表达式返回值:当前页中所有的单元格(cellExp)的个数函数示例:pccount(A2{条件}) 返回当前页中所有的A2格的个数函数说明:取得总的页数,注意,本函数只是在分页后才有效语法:pcount({booleanExp})参数说明:booleanExp 表达式返回值:页数。
函数示例:pcount() 返回总的页表中的页数pcount(true) 返回纵向分页的页表中的页数pcount(false) 返回横向分页的页表中的页数函数说明:计算分页后的当前页中所有的单元格(cellExp)的和,注意,本函数只是在分页后才有效语法:pcsum({cellExp})参数说明:cellExp 表达式返回值:当前页中所有的单元格(cellExp)的和函数示例:pcsum(A2{条件}) 返回当前页中所有的A2格之和函数说明:计算圆周率及其倍数语法:pi(numberExp)参数说明:numberExp 倍数,此参数省略,则返回圆周率返回值:圆周率及其倍数示例:例1:pi() 返回:3.141592653589793例2:pi(2) 返回:6.283185307179586函数说明:计算一个值在一个完全划分中的位置语法:plot( valueExp, ListExp{, eqExp}{, ascExp} )参数说明:valueExp 返回值的表达式,值可以是字符串、数值、日期、时间等ListExp 返回同valueExp数据类型相同的数组,要求其中元素从小到大排列eqExp 返回布尔值的表达式,缺省为false,为false表示与ListExp元素比较时不包含等于ascExp 返回布尔值的表达式,缺省为true,即表示ListExp中元素从小到大排列,否则为从大到小排列示例:例1:plot( 0, list(0,10,100) ) 返回1,第一个集合为<0,不包含0,第二个集合为>=0且<10,所以0落在了第二个集合中,集合的编号从0开始起编,依次为0,1,2,3,所以结果为1例2:plot( 0, list(0,10,100),true,true) 返回0例3:plot( 10, list(0,10,100), false ) 返回2例4:plot(10,list(100,10,0),true,false) 返回1详细说明:划分是指将一个集合划分成几个集合,如数组{0,10,100}在eqExp返回false的情况下将整数集或实数集划分成4个集合,依次分别是<0、<10(此集合中元素必定>=0)、<100(此集合中元素必定>=10)及其它(即>=100);在eqExp返回true的情况下将整数集或实数集划分成4个集合,分别是<=0、<=10(且>0)、<=100(且>10)及其它(即>100);对于数组{100,10,0},eqExp为false时也划分成4个集合,分别为>100,>10(且<=100),>0(且<=10)及其它(即<=0);eqExp为true时则为>=100,>=10(且<100),>=0(且<10)及其它(即<0)函数说明:取得当前页的页码,注意,本函数只是在分页后才有效语法:pno({booleanExp})参数说明:booleanExp 表达式返回值:当前页的页码。
集算报表
集算报表:报表工具的二次革命引入计算引擎产品结构润乾集算报表是一款面向程序人员用于开发固定报表的工具软件。
所谓固定报表,是指事先已经确定好格式和数据运算规则、在客户端输入参数即可呈现出来的报表,这类报表的重点在于复杂的计算过程和格式,在呈现阶段一般不会太多交互动作。
这是集算报表的体系结构图,从图中可以看到,集算报表和包括润乾报表在内的其它报表工具相比,多了一个计算层:数据源的数据先经过计算层的计算,再传给呈现层去展现。
以前的报表工具都是直接由呈现层连接数据源,报表的数据准备工作要么通过SQL(存储过程)在数据源环节完成,要么使用外部自定义数据源在应用程序(Java)中完成,总之都不是报表工具的任务。
当然,集算报表仍然支持由呈现层与数据源直接连接的方式。
计算层不是必须的。
为什么要增加一个计算层呢?我们知道,“零编码开发报表”是许多报表工具厂商(包括润乾)都喊过的口号,但现实并不是这么简单,虽然确实有不少简单报表真地可以拖拖拽拽完成,但仍然有相当数量的报表必须经过编码才能完成。
有报表开发经验程序员都知道,为报表编写复杂SQL是经常的事,存储过程以及事先准备的中间数据也是家常便饭,有时SQL和存储过程不好写的运算还需要采用自定义数据源即Java程序来处理。
虽然大部分报表相对简单,复杂报表总数上并不算多,但其占用的开发工作量却会是绝对的大头,开发10个用报表工具能拖拽完成的简单报表所用时间也做不了一个需要编码才能准备好数据的报表。
润乾报表的计算能力在市场上已经算是比较强的,可以在呈现阶段直接实现多数据源关联计算和比上期同期比等层次格间引用计算,但即使这样,我们在经营报表工具过程中仍然大量碰到复杂数据准备的需求, 开发工作量很繁重。
这样,引入计算中间层希望更便捷地实现数据准备就是个比较自然的想法,也就产生了集算器这个产品。
面对这类报表,我们不能再期望零编码,而是基于集算器简单编码。
严格地说,数据准备虽然对报表开发很重要,但已经不属于报表工具的任务范畴了,作为报表工具厂商,也可以名正言顺地拒绝处理这个事情,把数据准备丢给数据源和应用程序。
润乾报表基本介绍
润乾报表3.0介绍润乾报表 3.0是用于统计报表制作及报表及数据填报的大型企业级工具软件。
产品首次成功解决了报表单元格与关系数据库之间的关联规律性,特别适合于中国式报表的填报和统计。
一、产品优势1.绘制方便润乾报表采用类EXCEL的绘制方式,真正做到所见即所得,把程序员从繁重且无聊的报表格式设置工作中解脱出来,极大的提高的表格绘制的方便度和效率,产品特有的EXCEL导入功能(包括格式)可充分利用业务人员原有积累。
2.数据模型先进润乾报表独创的数据模型首次成功地解决了中国报表中单元格与数据字段之间的弱关联性,彻底打破传统行式报表方案,报表行列完全对称,特有的层次扩展机制使多层分组及交叉报表制作非常简单,提供针对关联格的跨行跨组运算,很容易计算小计、同期比等数据。
同一报表中支持多个异构的数据源,允许报表各片之间无关,可用多个简单的数据集成组合出复杂报表,程序员无须再为每张报表编程(脚本或存储过程)或写复杂SQL准备数据。
3.输出能力丰富润乾报表每个单元格属性均提供条件控制,如颜色、行高、是否可见等均可与格内数据相关;支持代码显示值对应、多种数据格式、图片文件和图片字段的处理。
产品提供十几种各类统计图,支持PNG/GIF/JPG三种格式。
每张报表均可生成HTML、EXCEL、PDF三种输出格式(输出结果完全不失真,包括其内的统计图)。
单元格与统计图例均可加带参数的链接从而实现数据钻取功能,多层报表可在线收缩展开。
4.打印控制强大润乾报表提供强大的打印控制功能,按行数和纸张大小分页分栏或强制分页,表头自动重复(包括左表头),允许一张纸上打多个报表,提供末页补足空行。
可采用像素和毫米两种计量单位,独创的底图描绘功能以支持套打;5.集成性好润乾报表采用纯JAVA开发,利用服务器端提供丰富的API调用和标记可完全无缝地嵌入到基于J2EE的应用程序中(可看作应用程序员自己写的代码),程序员可更换报表的数据库连接和数据源、采用应用服务器的连接池管理;设计器也提供外置的数据源和数据字典定义,可由应用程序员提供这些信息。
润乾报表常用函数
润乾常用函数数值计算函数说明:abs(numberExp)计算参数的绝对值语法:abs(numberExp)参数说明:numberExp 待计算绝对值的数据返回值:数值型示例:例1:abs(-3245.54) 返回:3245.54例2:abs(-987) 返回:987函数说明:cos(numberExp)计算参数的余弦值,其中参数以弧度为单位相关的函数有sin() 计算参数的正弦值tan() 计算参数的正切值语法:cos(numberExp)参数说明:numberExp 待计算余弦值的弧度数返回值:double型示例:例1:cos(pi()) 返回:-1例2:cos(pi(2)) 返回:1函数说明:eval( StringExp )动态解析并计算表达式语法:eval( StringExp )eval( StringExp, SubRptExp )eval( StringExp, DataSetExp )参数说明:StringExp 待计算的表达式串SubRptExp 嵌入式子报表对象,一般是含有子报表的单元格DataSetExp 数据集对象,一般是ds函数返回值:表达式的结果值,数据类型由表达式决定示例:例1:eval( "1+5" ) 返回6例2:eval("B2+10", A1) 其中A1为嵌入式子报表,表示计算A1子报表中的B2+10 例3:eval("salary+100", ds("ds1")) 表示计算数据集ds1中salary加100函数说明:exp(nExp)计算e的n次幂语法:exp(nExp)参数说明:nExp 指定次幂数返回值:数值型示例:例1:exp(4.3) 返回:73.69979369959579函数说明:fact(nExp)计算参数的阶乘语法:fact(nExp)参数说明:nExp 待计算阶乘的数据返回值:长整数(64位)示例:例1:fact(10) 返回:3628800函数说明:fill(s, n)获得n个s拼成的字符串相关函数:space() 产生一个空串语法:fill(s, n)参数说明:s 用于拼成新串的源串n 新串中包含源串的个数返回值:字符型示例:例1:fill("1 ",10) 返回:"1 1 1 1 1 1 1 1 1 1 "例2:fill("a b",10) 返回:"a ba ba ba ba ba ba ba ba ba b"函数说明:fl oat(string)将单精度浮点数、双精度浮点数、字符串转换为32位的单精度浮点型语法:float(string)float(number)参数说明:string 需要转换的单精度浮点数、双精度浮点数表达式number 数字返回值:32位的单精度浮点数示例:例1:float("1234567") 返回:1234567.0例2:float(1234567.0) 返回:1234567.0例3:float(1234567) 表达式提示错误,因为1234567不是浮点数函数说明:fl oor(numberExp, {nExp})对数据在指定位置上进行截取,剩余部分只要有值全舍去相关的函数有:ceil:对数据在指定位置上进行截取,剩余部分只要有值就进位round:对数据在指定位置上进行截取,剩余部分四舍五入语法:floor(numberExp, {nExp})参数说明:numberExp 需要进行截取的数据nExp 整数,用于指定需要进行截取的位置,>0:从小数点往右位移nExp个位数,<0:从小数点往左移nExp个位数=0:表示当前小数点的位置返回值:数值型示例:例1:=floor(3451231.234,0) 返回:3451231.0例2:=floor(3451231.234,-1) 返回:3451230.0例3:=floor(3451231.234,-2) 返回:3451200.0例4:=floor(3451231.234,1) 返回:3451231.2例5:=floor(3451231.234,2) 返回:3451231.23涵数说明:log(numberExp)计算参数的自然对数相关函数:log10() 计算以10为底的对数语法:log(numberExp参数说明:numberExp 需要计算自然对数的数据返回值:数值型示例:例1:log(54) 返回:3.9889840465642745 函数说明:log10(numberExp)计算以10为底的对数相关函数:log() 计算自然对数语法:log10(numberExp)参数说明:numberExp 需要计算以10为底的对数的数据返回值:数值型示例:例1:log10(54) 返回:1.7323937598229684 函数说明:pi(numberExp)计算圆周率及其倍数语法:pi(numberExp)参数说明:numberExp 倍数,此参数省略,则返回圆周率返回值:圆周率及其倍数示例:例1:pi() 返回:3.141592653589793例2:pi(2) 返回:6.283185307179586函数说明:pow(xExp, nExp)计算x的n次幂语法:pow(xExp, nExp)参数说明:xExp 底数nExp 次幂示例:例1:pow(2,4) 返回:16.0函数说明:round(numberExp, {nExp})对数据在指定位置上进行截取,剩余部分四舍五入相关的函数有:ceil:对数据在指定位置上进行截取,剩余部分只要有值就进位floor:对数据在指定位置上进行截取,剩余部分只要有值全舍去语法:round(numberExp, {nExp})参数说明:numberExp 需要进行截取的数据nExp 整数,用于指定需要进行截取的位置,>0:从小数点往右位移nExp个位数,<0:从小数点往左移nExp个位数=0:表示当前小数点的位置返回值:数值型示例:例1:=round(3451251.274,0) 返回:3451251.0例2:=round(3451251.274,-1) 返回:3451250.0例3:=round(3451251.274,-2) 返回:3451300.0例4:=round(3451251.274,1) 返回:3451251.3例5:=round(3451251.274,2) 返回:3451251.27函数说明:sin(number)计算参数的正弦值,其中参数以弧度为单位相关的函数有cos() 计算参数的余弦值tan() 计算参数的正切值语法:sin(number)参数说明:number 需要计算正弦值的弧度数示例:例1:sin(pi()) 返回:1.2246467991473532E-16例2:sin(pi(2)) 返回:-2.4492935982947064E-16 例3:sin(pi()/2) 返回:1.0函数说明:sqrt(number)计算平方根语法:sqrt(number)参数说明:number 需要计算平方根的数据返回值:数值型示例:例1:sqrt(100) 返回:10.0例2:sqrt(99) 返回:9.9498743710662函数说明:tan(number)计算参数的正切值,其中参数以弧度为单位相关的函数有sin() 计算参数的正弦值cos() 计算参数的余弦值语法:tan(number)参数说明:需要计算正切值的弧度数返回值:double型示例:例1:tan(pi()/2) 返回:1.633123935319537E16例2:tan(pi(2)) 返回:-2.4492935982947064E-16函数说明:sum(expression)对可扩展单元格或集合表达式进行求和语法:sum(expression)sum(cellExp,exp)参数说明:expression 需要被求和的单元格或表达式,一般为可扩展单元格或集合表达式 cellExp 单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp exp 表达式返回值:实数或者字符型,由被汇总的单元格数据类型决定示例:例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的和的合计值日期函数说明:age(dateExp{,typeExp})计算从参数定义的时间到当前间隔的整年数语法:age(dateExp{,typeExp})age(stringExp,formatExp{,typeExp})参数说明:dateExp 日期型表达式,运算的结果是日期型(Date)stringExp 表达式,其结果必须为日期或中国日期时间格式的字符串formatExp 格式化表达式比如"yyyyMMdd","yyyy-MM-dd"等typeExp 计算精确的最小单位1为日,2为月,3为年,缺省为日返回值:整数示例:假设今天为2007.1.1例1:age(datetime2("19800227","yyyyMMdd")) 结果为26例3:age("19800227","yyyyMMdd",3) 结果为27函数说明:date(stringExp)将字符串转换成日期型数据语法:date(stringExp)参数说明:stringExp 字符串表达式,其结果必须返回合法日期格式的字符串要求格式为yyyy-MM-dd,不含时间,如果含了时间,时间部分不转换返回值:日期时间型,但是时间部分都为00:00:00示例:例1:date("1982-08-09") 返回日期:1982-08-09 00:00:00例2:date("1982-08-09 10:20:30") 返回日期:1982-08-09 00:00:00函数说明:dateTime(string)将字符串或长整数转换成日期时间语法:dateTime(string)dateTime(long)参数说明:string 格式为yyyy-MM-dd HH:mm:ss的字符串long 以微秒计的长整数返回值:日期时间示例:例1:dateTime("2006-01-01 10:20:30") 返回:2006-01-01 10:20:30例2:dateTime("2006-01-01 10:20:30:111") 返回:2006-01-01 10:20:30例3:dateTime(12345) 返回:1970-01-01 08:00:12函数说明:datetime2(string, format)将各种格式的日期字符串转换成日期时间型数据,转换时可以指定字符串的当前格式语法:datetime2(string, format)参数说明:string 各种格式的日期字符串format 用于说明参数1的格式串返回值:日期时间型数据示例:例1:datetime2("12/28/1972","MM/dd/yyyy") 返回:1972-12-28 00:00:00 例2:datetime2("12/28/1972 10:23:43","MM/dd/yyyy hh:mm:ss") 返回:1972-12-28 10:23:43例3:datetime2("19800227","yyyyMMdd") 返回:1980-02-27 00:00:00 例4:datetime2("1982年12月30日","yyyy年MM月dd日") 返回:1982-12-30 00:00:00函数说明:day(dateExp)从日期型数据中获得该日在本月中是几号语法:day(dateExp)参数说明:dateExp 表达式,其结果必须为日期或中国日期时间格式的字符串返回值:整数示例:例1:day(datetime2("19800227","yyyyMMdd")) 返回:27例2:day(dateTime(12345)) 返回:1例3:day(dateTime("2006-01-15 10:20:30")) 返回:15函数说明:dayName(dateExp)从日期型数据中获得该日的星期名称语法:dayName(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:字符型示例:例1:dayName(datetime2("19800227","yyyyMMdd")) 返回:星期三例2:dayName(dateTime(12345)) 返回:星期四例3:dayName(dateTime("2006-01-15 10:20:30")) 返回:星期日例4:dayName("12:14:34") 返回:星期四例5:dayName("1972-11-08") 返回:星期三例6:dayName("1972-11-08 10:20:30") 返回:星期三函数说明:dayNo(dateExp)从日期型数据中,获得该日位于一个星期中的第几天,星期天返回1,星期一返回2,依此类推语法:dayNo(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:整数示例:例1:dayNo(dateTime2("19800227","yyyyMMdd")) 返回:4例2:dayNo(dateTime("2006-01-15 10:20:30")) 返回:1例3:dayNo("1972-11-08 10:20:30") 返回:4函数说明:daysAfter(dateExp1, dateExp2)计算两个日期型数据相差几天语法:daysAfter(dateExp1, dateExp2参数说明:dateExp1 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss dateExp2 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss 返回值:整数示例:例1:daysAfter(dateTime("1983-12-15 10:20:30"),datetime2("1982年12月30日","yyyy年MM月dd日"))返回:-350例2:daysAfter("1983-12-15 10:20:30","1982-12-30") 返回:-350函数说明:daysInMonth(dateExp)获得指定日期所在月的天数语法:daysInMonth(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss 返回值:整数示例:例1:daysInMonth(datetime2("19800227","yyyyMMdd")) 返回:29例2:daysInMonth("1972-11-08 10:20:30") 返回:30例3:daysInMonth(dateTime("2006-01-15 10:20:30")) 返回:31函数说明:daysInYear(dateExp)获得指定日期所在年或者指定年份的天数语法:daysInYear(dateExp)daysInYear(year)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ssyear 返回整数的表达式返回值:整数示例:例1:daysInYear(datetime2("19800227","yyyyMMdd")) 返回:366 例2:daysInYear(dateTime("2006-01-15 10:20:30")) 返回:365例3:daysInYear("1972-11-08 10:20:30") 返回:366例4:daysInYear(2006) 返回:365函数说明:hour(datetimeExp)从日期时间型数据中,获得当前时间位于一天中的第几个时辰语法:hour(datetimeExp)参数说明:datetimeExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss 返回值:整数示例:例1:hour("1983-12-15") 返回:0例2:hour("1983-12-15 10:30:25") 返回:10例3:hour(dateTime("2006-01-15 13:20:30")) 返回:13函数说明:lastday(dateExp)获得指定日期的上一天语法:lastday(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:日期时间型示例:例1:lastday("1972-11-08 10:20:30") 返回:1972-11-07 10:20:30例2:lastday(datetime2("19800227","yyyyMMdd")) 返回:1980-02-26 00:00:00 例3:lastday(dateTime("2006-01-15 10:20:30")) 返回:2006-01-14 10:20:30函数说明:lastmonth( dateExp )取得指定日期在上月的同日,若无同一日,则返回上月月末语法:lastmonth( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:日期时间型示例:例1:lastmonth(datetime2("19800227","yyyyMMdd")) 返回:1980-01-27 00:00:00 例2:lastmonth("1972-11-08 10:20:30") 返回:1972-10-08 10:20:30例3:lastmonth(dateTime("2006-01-15 10:20:30")) 返回:2005-12-15 10:20:30函数说明:lastyear( dateExp )取得指定日期在去年的同月同日,若无同月同日,则返回去年同月最后一天语法:lastyear( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss返回值:日期时间型示例:例1:lastyear(datetime2("19800227","yyyyMMdd")) 返回:1979-02-27 00:00:00 例2:lastyear("1972-11-08 10:20:30") 返回:1971-11-08 10:20:30例3:lastyear(dateTime("2006-01-15 10:20:30")) 返回:2005-01-15 10:20:30函数说明:minute(datetimeExp)从日期时间型数据中,获得分钟的信息语法:minute(datetimeExp)参数说明:datetimeExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:minute(datetime2("19800227","yyyyMMdd")) 返回:0例2:minute("1972-11-08 10:20:30") 返回:20例3:minute(dateTime("2006-01-15 13:20:30")) 返回:20函数说明:month(dateExp)取得指定日期所在的月份语法:month(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:month(datetime2("19800227","yyyyMMdd")) 返回:2例2:month("1972-11-08 10:20:30") 返回:11例3:month(dateTime("2006-01-15 13:20:30")) 返回:1函数说明:monthbegin( dateExp )取得指定日期所在月的月首语法:monthbegin( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间型示例:例1:monthbegin(datetime2("19800227","yyyyMMdd")) 返回:1980-02-0100:00:00例2:monthbegin("1972-11-08 10:20:30") 返回:1972-11-01 10:20:30例3:monthbegin(dateTime("2006-01-15 13:20:30")) 返回:2006-01-01 13:20:30 函数说明:monthend( dateExp )取得指定日期所在月的月末语法:monthend( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间型示例:例1:monthend(datetime2("19800227","yyyyMMdd")) 返回:1980-02-29 00:00:00 例2:monthend("1972-11-08 10:20:30") 返回:1972-11-30 10:20:30例3:monthend(dateTime("2006-01-15 13:20:30")) 返回:2006-01-31 13:20:30 函数说明:now()获得系统此刻的日期时间语法:now()返回值:日期时间函数说明:quaterbegin( dateExp )取得指定日期所在季度的首日语法:quaterbegin( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss\ 返回值:日期时间\示例:例1:quaterbegin(datetime2("19800227","yyyyMMdd")) 返回:1980-01-0100:00:00\例2:quaterbegin("1972-11-08 10:20:30") 返回:1972-10-01 10:20:30\例3:quaterbegin(dateTime("2006-01-15 13:20:30")) 返回:2006-01-01 13:20:30\ 函数说明:quaterend( dateExp )取得指定日期所在季度的末日语法:quaterend( dateExp )参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间示例:例1:quaterend(datetime2("19800227","yyyyMMdd")) 返回:1980-03-31 00:00:00 例2:quaterend("1972-11-08 10:20:30") 返回:1972-12-31 10:20:30例3:quaterend(dateTime("2006-01-15 13:20:30")) 返回:2006-03-31 13:20:30 函数说明:relDate(dateExp, nExp)从给定的日期型数据中,算出相差n天后的新的日期数据语法:relDate(dateExp, nExp)参数说明:dateExp 给定的起始日期表达式,其结果必须为日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss nExp 整数表达式,需要求得nExp天后的新日期返回值:日期时间示例:例1:relDate(datetime2("19800227","yyyyMMdd"),5) 返回:1980-03-03 00:00:00 例2:relDate("1972-11-08 10:20:30",-10) 返回:1972-10-29 10:20:30例3:relDate(dateTime("2006-01-15 13:20:30"),15) 返回:2006-01-30 13:20:30函数说明:relTime(datetimeExp, nExp)从给定的日期时间型数据中,算出相差n秒后的新的日期时间数据语法:relTime(datetimeExp, nExp)参数说明:datetimeExp 给定的起始日期表达式,其结果必须为日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss nExp 整数表达式,需要求得nExp秒后的新日期时间返回值:日期时间示例:例1:relTime(datetime2("19800227","yyyyMMdd"),5) 返回:1980-02-27 00:00:05 例2:relTime("1972-11-08 10:20:30",-10) 返回:1972-11-08 10:20:20例3:relTime(dateTime("2006-01-15 13:20:30"),15) 返回:2006-01-15 13:20:45 函数说明:second(datetimeExp)从日期时间型数据中,获得秒信息语法:second(datetimeExp)参数说明:datetimeExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:second(datetime2("19800227","yyyyMMdd")) 返回:0例2:second("1972-11-08 10:20:30") 返回:30例3:second(dateTime("2006-01-15 13:20:45")) 返回:45函数说明:secondsAfter(datetimeExp1,datetimeExp2)计算两个日期时间型数据相差几秒语法:secondsAfter(datetimeExp1,datetimeExp2)参数说明:datetimeExp1 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss datetimeExp2 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:secondsAfter(datetime2("19800227","yyyyMMdd"),dateTime("1980-02-27 00:00:45")) 返回:45例2:secondsAfter("1972-11-08 10:20:30","1972-11-08 10:30:50") 返回:620函数说明:time(stringExp)将字符串转换成时间型数据语法:time(stringExp)参数说明:stringExp HH:mm:ss格式的字符串返回值:时间型数据示例:函数说明:weekbegin(dateExp)获得指定日期所在星期的星期天,这里认定星期天为一周的开始语法:weekbegin(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间型示例:例1:weekbegin(datetime2("19800227","yyyyMMdd")) 返回:1980-02-24 00:00:00 例2:weekbegin("1972-11-08 10:20:30") 返回:1972-11-05 10:20:30例3:weekbegin(dateTime("2006-01-15 13:20:45")) 返回:2006-01-15 13:20:45 函数说明:weekend(dateExp)获得指定日期所在星期的星期六,这里认定星期六为一周的结束语法:weekend(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:日期时间型示例:例1:weekend(datetime2("19800227","yyyyMMdd")) 返回:1980-03-01 00:00:00 例2:weekend("1972-11-08 10:20:30") 返回:1972-11-11 10:20:30例3:weekend(dateTime("2006-01-15 13:20:45")) 返回:2006-01-21 13:20:45 函数说明:year(dateExp)从日期型数据中获得年信息语法:year(dateExp)参数说明:dateExp 日期或标准日期格式的字符串,如:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd 或HH:mm:ss 返回值:整数示例:例1:year(datetime2("19800227","yyyyMMdd")) 返回:1980例2:year("1972-11-08 10:20:30") 返回:1972例3:year(dateTime("2006-01-15 13:20:45")) 返回:2006字符串函数说明:asc( string{, nPos} )取字符串指定位置的字符的unicode值,如果是ascii字符则返回ascii码(一般来说,英文字符及其扩展字符都是ascii字符,中文、日文、韩文等亚洲字符都是unicode字符,ascii字符为8位,unicode字符为16位(其中有3位用于标志字符类型))相关函数:char() 根据给定的unicode编码或者ascii码取得其对应的字符语法:asc( string{, nPos} )参数说明:string 给定的字符串nPos 整数表达式,缺省为0返回值:整数示例:例1:=asc("def") 返回:100 (ascii)例2:=asc("def",1) 返回:101 (ascii)例3:=asc("中国") 返回:20013 (unicode)例4:=asc("中国",1) 返回:22269 (unicode)函数说明:d eicmal(stringExp)将字符串或数字型数值转换成大浮点数语法:deicmal(stringExp)decimal(numberExp)参数说明:stringExp 给定数字串,可含小数点numberExp 数值,只能少于等于64位,超过64位就要用字符串返回值:大浮点数BigDecimal示例:例1:decimal("123456789012345678901234567890") 返回:123456789012345678901234567890例2:decimal(1234567890123456) 返回:1234567890123456(BigDecimal 类型)函数说明:left(string, n)获得源字符串左边的子串相关函数:mid() 获得源字符串中间的子串right() 获得源字符串右边的子串语法:left(string, n)参数说明:string 获得子串的源串n 获得子串的长度返回值:字符型示例:例1:left("abcdefg",3) 返回:"abc"函数说明:len(s)计算字符串的长度语法:len(s)参数说明:s 待计算长度的字符串返回值:整数示例:例1:len("adfg") 返回:4例2:len(" abd ") 返回:7函数说明:long( string )将字符串或数字转换成64位长整数语法:long( string )long( number )参数说明:string 需要转换的字符串表达式number 数字,如果带有小数,则小数部分被截掉返回值:64位长整数示例:例1:long("1234567") 返回:1234567例2:long(1234567.789) 返回:1234567函数说明:lower(s)将字符串转成小写相关函数:upper() 把字符串转成大写word_cap() 将字符串每一个单词的首字母大写语法:lower(s)参数说明:s 待转成小写的字符串返回值:字符型示例:例1:lower("ABCdef") 返回:"abcdef"例2:lower("defABC") 返回:"defabc"函数说明:ltrim(s)去掉字符串左边的空格相关函数:rrim() 去掉字符串右边的空格trim() 去掉字符串左右的空串语法:ltrim(s)参数说明:s 准备去掉左边空格的源串返回值:字符串型示例:例1:ltrim(" abc def ") 返回:"abc def "例2:ltrim("def abc ") 返回:"def abc "函数说明:maxwidth()求当前列中所有非合并格的显示串的最大字符长度(注意:ASCII码大于255的字符长度为2)语法说明:maxwidth()返回值:整数示例:一般用于列首格中,动态控制列宽例1:在列首格的单元格宽属性中写入8*maxwidth(),表示动态调整当前列宽为单元格显示值最大字符长度*8个像素函数说明:mid(s, start{, end})返回字符串的子串相关函数:left() 获得源字符串左边的子串right() 获得源字符串右边的子串语法:mid(s, start{, end})参数说明:s 待获得子串的源串start 获得子串的起始位置end 获得子串的结束位置,缺省为源串的长度返回值:字符串型示例:例1:mid("abcde",0) 返回:abcde例2:mid("abcde",1,2) 返回:b例3:mid("abcde",3) 返回:de函数说明:pos(s1, s2{, begin})查找母串中子串的位置语法:pos(s1, s2{, begin})参数说明:s1 待查找子串的母串s2 被查找的子串begin 查找的起始位置,缺省为0 返回值:整数示例:例1:pos("abcdef","def") 返回:3例2:pos("abcdefdef","def",5) 返回:6函数说明:right(s, n)获得字符串右边的子串相关函数:left() 获得源字符串左边的子串mid() 获得源字符串中间的子串语法:right(s, n)参数说明:s 待获得子串的源串n 获得子串的长度返回值:字符串型示例:例1:right("abced",2) 返回:"ed"函数说明:rmQuote(exp)删除表达式里的引号,包括单引号和双引号语法:rmQuote(exp)参数说明:exp 表达式返回值:字符串函数说明:rplc( srcExp,subStrA,rplcStrB{,boolExp})将字符串src的子字符串a变为字符串b,语法:rplc( srcExp,subStrA,rplcStrB{,boolExp})参数说明:srcExp 源字符串subStrA 源字符串的子字符串rplcStrB 将要替换成的字符串boolExp 引号里的字符是否需要变换,缺省为true返回值:替换后的字符串示例:例1:rplc("abc'abc'def","a","中国") 返回:"中国bc'中国bc'def"例2:rplc("abc'abc'def","a","中国",false) 返回:"中国bc'abc'def"例3:rplc("abc'abc'def","a","中国",true) 返回:"中国bc'中国bc'def"函数说明:rtrim(s)去掉字符串右边的空格相关函数:ltrim() 去掉字符串左边的空格trim() 去掉字符串左右的空串语法:rtrim(s)参数说明:s 准备去掉右边空格的源串返回值:字符串型示例:例1:rtrim(" abc def ") 返回:" abc def"例2:rtrim("def abc ") 返回:"def abc"函数说明:space(n)产生一个空串相关函数:fill() 获得n个s拼成的字符串语法:space(n)参数说明:n 生成空串的长度返回值:字符串型,获得n个空格拼成的字符串示例:例1:space(5) 返回:" "函数说明:split( srcExp,sepExp{,boolExp})将字符串按分割符分割成多个子串语法:split( srcExp,sepExp{,boolExp})参数说明:srcExp 待分割的字符串表达式sepExp 分隔符表达式boolExp bool型,是否解析引号、括号里的分隔符,为true时解析,为false时不解析,缺省为false返回值:分割后的字符串列表示例:例1:=split("ab;cd;ef;tg;tt",";") 返回数组:["ab","cd","ef","tg","tt"]例2:=split("ab;c'd;e'f;tg;tt",";",false) 返回数组:["ab","c'd;e'f","tg","tt"]不解析引号里的分隔符例3:=split("ab;c[d;e]f;tg;tt",";",false) 返回数组:["ab","c[d;e]f","tg","tt"]不解析括号里的分隔符例4:=split("ab;c'd;e'f;tg;tt",";",true) 返回数组:["ab","c'd","e'f","tg","tt"]解析引号里的分隔符例5:=split("ab;c[d;e]f;tg;tt",";",true) 返回数组:["ab","c[d","e]f","tg","tt"]解析括号里的分隔符函数说明:trim(s)去掉字符串左右的空串相关函数:right_trim() 去掉字符串右边的空格left_trim() 去掉字符串左边的空格语法:trim(s)参数说明:s 待去掉左右空串的源串返回值:字符串型示例:例1:trim(" abc ") 返回:"abc"例2:trim(" a bc ") 返回:"a bc"函数说明:upper(s)把字符串转成大写相关函数:lower() 把字符串转成小写word_cap() 将字符串每一个单词的首字母大写语法:upper(s)参数说明:s 待转成大写的源串返回值:字符串型示例:例1:upper("ABCdef") 返回:"ABCDEF"例2:upper("abcDEF") 返回:"ABCDEF"函数说明:wordCap(s)将字符串每一个单词的首字母大写相关函数:upper() 把字符串转成大写lower() 把字符串转成小写语法:wordCap(s)参数说明:s 需要将单词首字母大写的源串返回值:字符串型示例:例1:wordCap("I love my country") 返回:"I Love My Country"例2:wordCap("she is beautiful") 返回:"She Is Beautiful"单元格函数说明:avg(expression{,containNull})对可扩展单元格或集合表达式求平均值语法:avg(expression{,containNull})average(expression{,containNull})参数说明:expression 需要求平均值的单元格或表达式,一般为可扩展单元格或集合表达式containNull 是否对null元素进行计数返回值:实数示例:例1:avg(A1:B10) 求得A1至B10之间单元格的平均值,注意是以当前格为基格计算A1和B10例2:avg(arg1) 其中arg1是整数组,表示求得arg1中所有数据的平均值例3:avg(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的平均值例4:avg(B1{`0}{}) 表示求得根坐标下所有扩展后的B1单元格的平均值例5:avg(list(2,4,null),false)返回3,如果containNull为true或缺省则返回2函数说明:avg2(cellExp,exp{,containNull})以指定单元格集的元素为基格计算表达式求平均值语法:avg2(cellExp,exp{,containNull})参数说明:cellExp 单元格或单元格集合,以cellExp里的单元格为当前格计算表达式expexp 表达式containNull 是否对null元素进行计数返回值:实数示例:例1:avg2(A1[`0]{},B1+C1) 计算分别与每个A1相对应的B1、C1的和的平均值函数说明:call(sqlStatement{,arg1{,arg2{,arg3{,……}}}})执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个字段,则返回第一个字段的结果值语法:call(sqlStatement{,arg1{,arg2{,arg3{,……}}}})参数说明:sqlStatement 合法的调用存储过程的sql语句arg(n) sql语句的参数,可以是常数也可以是表达式,如果是输出结果集的参数,对应的参数表达式写成"@@result"返回值:一组数据的集合,由结果集的第一个字段决定数据类型,如果结果集是多列,只返回第一列示例:例1:call("{call ResultSet (?,?,?)}","@@result","000001",A2)表示执行存储过程ResultSet,第一个输出参数输出结果集,第二、三个参数传入"000001",A2作为参数值函数说明:call(dbName,sqlStatement{,arg1{,arg2{,arg3{,……}}}})除第一个参数为数据源连接外,其他参数可call()函数相同,功能也和call()函数相同,通过第一个参数,可以实现不同的单元格连接不同的数据源。
润乾rank函数使用 -回复
润乾rank函数使用-回复润乾(rank)函数是一种在电子表格软件中常用的函数,用于确定某个值在一组数据中的排名。
无论是在商业分析、统计学还是金融投资领域,润乾函数都是非常有用的工具。
本文将详细介绍润乾函数的使用方法,包括语法、示例和常见应用场景,帮助读者更好地理解和运用该函数。
润乾函数的语法如下:`RANK(number,ref,[order])`参数解释如下:- `number` 为要进行排名的数值。
- `ref` 是包含要比较的一组数值的单元范围。
- `[order]` 是一个可选参数,用于指定排名的顺序。
默认值为0,表示降序排列;若设置为1,则表示升序排列。
在使用润乾函数之前,我们先来看一个简单的示例:假设有一个电子表格,A列包含学生的姓名,B列包含他们的分数。
我们想要根据分数列的值,确定每个学生在班级中的排名。
我们将使用润乾函数来实现这一目标。
1. 首先,在C列的第一个单元格中(通常是C2),输入`润乾(rank)`函数的公式:`=RANK(B2,B2:B10,0)`2. 在这个例子中,我们的`number`参数为B2,即要进行排名的分数;`ref`参数为B2:B10,即要比较的数值范围,我们将其设置为一个相对范围,其中的``号表示该范围是固定的;`[order]`参数设为0,表示降序排列。
3. 接下来,复制这个公式到C列的其他单元格中。
4. 现在,C列将显示每个学生在班级中的排名。
除了上面的示例,润乾函数还有许多其他的常见应用场景。
下面,我们将介绍几个典型的例子,以帮助读者更好地理解和应用该函数。
1. 排名并计算百分比:除了简单地给出排名,我们还可以计算每个值在一组数据中所占的百分比。
假设我们要确定学生每个人在班级中分数的百分比。
我们可以输入以下公式:`=RANK(B2,B2:B10,0)/COUNT(B2:B10)`。
通过将排名除以数据范围的总数,我们可以得到每个值的百分比。
2. 带有并列排名:在某些情况下,可能会出现多个值在一组数据中并列排名的情况。
FineReport与润乾报表的比较
fineReport报表与润乾报表的比较一.概述通过对合肥警综业务功能和客户需求的分析,需要定制开发针对合肥警综平台的报表系统.考虑到人力资源和开发成本,目前的合肥警综开发项目组依托自身资源想要开发一套报表系统,难度高、代价大、可复用性低,通过多方协商和研讨,最终确定使用第三方报表工具生成报表并集成到合肥警综系统中.目前国内主流报表系统主要有FineReport报表系统和润乾报表系统,下面对这两款报表工具进行全面的分析和对比,以供后来者技术选型做参考。
二.优缺点比较fineReport与润乾报表工具的优缺点比较主要以表格的形式展现表1 fineReport与润乾比较表三.心得通过两种报表的实际使用情况,以下是个人在使用过程中的一些心得:1)润乾报表的数据处理方面相对而言要优于rineReport报表,但是在报表的页面以及效果的展示方面不及rineReport,而且图表方面也不及rineReport做得好2)fineReport报表工具现成的配置比较全面,大部分的功能实现直接通过拖拽即可实现,但是润乾需要些公式进行数据显示,需要进行大量的公式记忆3)页面效果展示上面finereport还是比较绚丽的,有很好的动态的flash效果图,支持的类型比较多,提供的二次接口也比较丰富,用户自定义的东西也不错.4)项目部署的时候,finereport需要自己手动拷贝目录,而润乾报表有现成的功能可以直接导出部署成一个web项目不管是fineReport还是润乾报表,使用这些报表工具制作报表的效率远远高于自己通过代码实现报表的生成,大大节约了工作量。
以下是制作功能类似的报表的两种制作方法的比较(fineReport报表工具以及手写代码的实现)关于同比、环比的计算(请忽略页面布局问题,从内网拍照获取)(FineReport实现,润乾实现方法类似)实现过程:(1)获取以下需要用到的数据集获取数据集的sql相对而言比较简单:以本月立案为例(本月破案、去年、上月等数据集获取的sql语句差不多)将数据拖入到表格中,然后根据需要显示的数据写入公式获取数据(红色框内为环比和同比的公式)即可完成需要的报表对比于警综的刑事警情、刑事案件的同比、环比的计算(两者实现不同,但功能类似)(代码实现:实现同比、环比计算的其中一个方法的代码)。
FineReport与润乾报表对比
一、参数设计对比
• 1、参数默认界面
– 示例:FineReport设计:
一、参数设计对比
• 2、参数定义和引用
– 功能描述: 参数定义都有多种方式,每种方式都各有优劣,常用的定义参数 形式有:在SQL语句中定义、报表参数定义、单元格中直接引用 等。 在FineReport工具中,这些定义的形式都是相互独立的,可以根 据需要定义。 在润乾中,必须先在报表参数中定义参数,然后在SQL或是在单 元格中在引用参数。
一、参数设计对比
• 5、参数界面状态
– 示例:FineReport设计:
一、参数设计对比
• 6、参数控件风格
– 功能描述: 参数控件编辑风格越多,可选择性越大,报表在设计上也就更加 的多样化和个性化。 FineReport支持20多种编辑风格; 润乾仅支持10种编辑风格。
一、参数设计对比
• 6、参数控件风格
二、展示功能对比
• 5、单元格文字分散对齐
– 示例:润乾设计:
二、展示功能对比
• 6、单元格文字竖排展现
– 功能描述: 对于单元格中的文字,有时候需要设置为竖排显示。
– 支持程度: FineReport报表支持。 润乾报表不支持。
二、展示功能对比
• 6、单元格文字竖排展现
– 示例:FineReport设计
– 支持程度: FineReport背景图保存于模板文件中。 润乾背景图通过URL连接,保存在系统路径中。
二、展示功能对比
• 11、背景图保存于模板文件中
– 示例:FineReport设计:
二、展示功能对比
• 11、背景图保存于模板文件中
润乾报表工具使用情况介绍.ppt
31
Java API
相关JAR包: barcode.jar jai_codec.jar log4j_128.jar jdom.jar jai_core.jar poi2.jar iTextAsian.jar itext2_rq.jar report4.jar
2019年4月26日11时53分
结合批量生成固定报表的特点,应避免润乾报表模板内置数据集取数的方
式,利用API中的自定义数据集的接口,由自主开发的引擎一次性的取出数据,并自 己组织数据集,这样能够使数据在进入润乾报表前就进行了拆分,充分利用润
乾报表的灵活输出格式的优点。
这样还可以利用批量框架的并发来实现高效的输出报表的目的。
2019年4月26日11时53分 37
出了非线性报表数学模型,采用了强关联语义模型、多源关联分片、不规则
分组、自由格间运算、行列对称等技术,使得复杂报表的设计简单化,以往 难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备
,提高报表设计效率。
润乾报表不需安装控件,采用标准的纯HTML的Web报表,支持ie、 netscape等多种浏览器,可以支持PDF,Excel等输出,提供了全面的页面
20
单元格控制
思考以下几个问题如何实现: 隔行变色 一级指标粗体,二级指标缩进 满足一定条件的值用红色显 示 单元格宽度由显示的内容决定
2019年4月26日11时53分
21
单元格控制
2019年4月26日11时53分
22
一个例子
2019年4月26日11时53分
23
目录结构
一、认识润乾
2019年4月26日11时53分
润乾报表附加数据集在集算报表中的处理方案
润乾报表附加数据集在集算报表中的处理方案
在润乾报表中提供了附加数据集功能,可以在一个单元格(主格)中关联多个数据集,关联后多个数据集如同一个数据集使用。
当数据集较多需要相互关联,甚至多个数据集来源于不同数据库时,使用附加数据集可以快速完成关联且能够获得更高的报表性能。
集算报表在润乾报表的基础上去掉了附加数据集的功能,取而代之可以使用集算器或脚本数据集完成多数据集关联,通过脚本返回的层次数据集快速完成这类报表的开发。
下面通过例子来比较一下二者的不同。
润乾报表附加数据集
一个报表中需要使用来源于三个数据集(ds1:订单、ds2:客户、ds3:运货商)的数据,在润乾报表使用使用附加数据集可以这样完成:
在A2格中增加“附加数据集表达式”:
ds2.select(客户ID,,客户ID==ds1.客户ID)
ds3.select(运货商ID,,运货商ID==ds1.运货商),如图示:
完成后,加入B2-F2的表达式,直接使用取值表达式,使用方式与主数据集ds1一致。
集算报表的处理方案
在集算报表中新建报表并新增脚本数据集ds1,脚本内容如下:
取得三张表数据后,在脚本中完成关联,并将关联后的结果集返回给报表。
值得注意的是,在脚本数据集中关联后的结果集是带有层次的,称为层次数据集。
在报表中的表现形式为:
编写报表表达式,使用脚本返回的层次数据集:
可以看到在集算报表中通过脚本数据集处理多数据源关联的方式,如果在脚本编写过程中还需要使用编辑调试功能,可以使用独立的集算脚本编辑器,编写后的脚本文件可以在集算报表的“集算器数据集”中调用。
报表展现结果如下:。
润乾报表实用技巧大全
=floor(3451231.234,1)
返回: 3451231.2
round()
对数据在指定位置上 进行截取,剩余部分 四舍五入
=round(3451251.274,1)
返回: 3451251.3
字符串函数
函数名称 函数说明
去掉字符串左右的空 串
实例
实例说明
trim()
trim(" abc ")
常用单元格函数
函数名称 函数说明
对可扩展单元格或集 合表达式求平均值
实例
实例说明 表示当前主格扩 展区域内所有扩 展后的B1单元 格的平均值
avg()
avg(B1{})
if()
根据布尔表达式的不 同计算结果,返回不 同的值。
求当前格的值大 if(value()>100,-65536) 于100时,返回65536颜色值 求当前主格扩展 区域内所有扩展 后的B1单元格 的个数
相同的大小写,并将电子签名文件存放到润乾文件目录下的统一目
录中。如下所示。
2.在需要签名的单元格上右击,选择“数据类型”,在弹出的对话框中 选择图片文件。
制作电子签名
3.修改内容为:=“reportFiles/image/”+RNAM+“.jpg” 点确定保存。
制作电子签名
4.在浏览器中查看签名
网格式填报表-自动计算
• 基本概念
– 在客户端浏览器中跟据输入自动实现单元格值计算
输入自动计算的表达式的规则如下:
• 自动计算的表达式语法规则全部采用 操作 JavaScript 的语法规则。 • 自动计算的表达式中,如果需要相对引用单元格,即当报表进行扩展 注意
打印补空行
润乾报表常用语法
如果某几行数值为“小计”、“合计”等数值,需要将其背景颜色改变,假设第一列是A5,则点单元格属性-字体-背景色,将其数值修改为if (A5 like '*计*',-592192,-1),这样“小计”、“合计”行的颜色就会变化,而其他行颜色不变。
3、按参数隐藏列
在报表参数中,传入某个数值后,将某一列或几列隐藏,例如当报表日期大于2009年1月1日,则隐藏几列,可以选择该列,在右边的属性中,找到“是否可见”,在表达式中填写if(@reportdate>"20090101",false,true),即可按照输入参数隐藏列。
润乾报表软件是一个常用的java报表工具,使用较为简单,可以轻ቤተ መጻሕፍቲ ባይዱ制作出各种各样的报表,是一个不错的Web报表工具,下面是我分享的一些使用润乾报表工具所总结的经验和技巧,供其他润乾报表的使用者参考。
1、按照千元单位显示
点单元格属性-显示值-表达式,将数值修改为if(value()!=0,value()/1000,0),这样,可以在数据数值不变的情况下将数值按照千元方式显示。
4、报表固定表头
报表在WEB页面输出的时候,需要设置横向、纵向滚动条来固定报表表头,选中需要固定的行或者列,点属性,将其所属区域设置为“表头区”,就可以固定表头。
润乾报表扩展函数
润乾报表扩展函数
润乾是一款企业级报表工具,提供了丰富的报表扩展函数以支持各种复杂的报表需求。
以下是一些常用的润乾报表扩展函数:
1. REPLACE函数:用于替换字符串中的指定字符或字符串。
语法:REPLACE(string, find_string, replace_string)
2. UPPER函数和LOWER函数:用于将字符串转换为大写或小写。
语法:UPPER(string) 和 LOWER(string)
3. TRIM函数:用于去除字符串两端的空格。
语法:TRIM(string)
4. CONCAT函数:用于连接两个或多个字符串。
语法:CONCAT(string1, string2, ...)
5. SUBSTR函数:用于截取字符串中的指定部分。
语法:SUBSTR(string, start_position, length)
6. DATE函数和TIME函数:用于获取当前日期和时间。
语法:DATE() 和 TIME()
7. IF函数:用于条件判断,根据条件返回不同的结果。
语法:IF(condition, value_if_true, value_if_false)
8. COUNT函数和SUM函数:用于统计符合条件的记录数或计算符合条件的数值总和。
语法:COUNT(expression) 和 SUM(expression)
这些是润乾报表扩展函数中的一些常用函数,润乾还提供了其他许多函数,具体使用方法可以参考润乾的官方文档或用户手册。
润乾报表排序函数
润乾报表排序函数润乾报表排序函数是一种用于对报表数据进行排序的函数。
它可以根据指定的排序字段和排序方式,对报表中的数据进行排序,以便更好地展示和分析数据。
我们需要明确润乾报表排序函数的使用方法。
该函数的基本语法如下:```SORT(数据区域, 排序字段1, 排序方式1, 排序字段2, 排序方式2, ...)```其中,数据区域是待排序的数据区域,可以是一个单独的列、行或整个表格。
排序字段是指定数据排序的依据,可以是列名、行号或其他标识。
排序方式可以是升序(ASC)或降序(DESC)。
使用润乾报表排序函数可以实现以下几种常见的排序需求:1. 单列排序:通过指定一个排序字段和排序方式,对数据区域中的数据进行排序。
例如,我们可以对销售额列进行升序排序,以便找出销售额最低的产品。
2. 多列排序:通过指定多个排序字段和排序方式,对数据区域中的数据进行排序。
例如,我们可以先按照销售额进行升序排序,然后再按照产品名称进行降序排序,以便找出销售额最低且名称最靠后的产品。
3. 条件排序:通过结合润乾报表的条件函数,可以实现按照条件进行排序的功能。
例如,我们可以对销售额大于10000的产品进行升序排序,以便找出销售额较高的产品。
润乾报表排序函数的使用非常灵活,可以根据具体的需求灵活设置排序字段和排序方式。
同时,润乾报表还提供了其他一些辅助函数,如去重函数、筛选函数等,可以与排序函数结合使用,进一步提升数据处理的效率和准确性。
在实际应用中,润乾报表排序函数被广泛应用于各种报表数据的排序和分析工作中。
它可以帮助用户快速准确地找出数据中的最大值、最小值、前几名、后几名等信息,从而更好地理解和利用数据。
润乾报表排序函数是一种非常实用的数据处理函数,可以帮助用户对报表数据进行快速准确的排序和分析。
通过合理使用该函数,用户可以更好地理解和利用报表数据,为决策提供有力的支持。
润乾报表函数文档
数据集函数Avg函数说明:从数据集中,从满足条件的记录中,算出给定字段或表达式的平均值语法:datasetName.avg(selectExp{,filterExp})datasetName.average(selectExp{,filterExp})参数说明:selectExp 需要计算平均值的字段或表达式,数值类型filterExp 过滤条件表达式返回值:实数举例:例1:ds1.avg(score,sex="1")表示从数据集的当前记录行集中过滤出sex为"1"的记录集合,求得其score字段的平均值,score字段要求为数值型。
例2:ds2.avg(quantity*price)表示对数据集的当前记录行集求得表达式quantity*price的平均值函数说明:此函数功能等同select1(),但是算法不同,采用二分法,适用于数据集记录已经按照参考字段排好序的情况,运算速度比select1()快bselect1语法:datasetName.bselect_one(selectExp,referExp1,referDescExp1,referV alueExp1{,referExp2,referDescExp2,referV alueExp2{....}}})datasetName.bselect1(selectExp,referExp1,referDescExp1,referV alueExp1)参数说明:selectExp 选出字段或表达式referExp1 参考字段表达式referDescExp1 参考字段表达式的数据顺序,true表示降序排列,false表示升序排列referV alueExp1 参考字段的值表达式,一旦找到参考字段和该值相同的记录,即返回selectExp的值返回值:数据类型不定,由selectExp的运算结果决定示例:例1:ds1.bselect1(name,id,false,@value)采用二分法,找到数据集ds1中id和当前格的值相等的记录,返回其name字段值例2:ds1.bselect1(name,id,false,@value,class,false,A1,sex,true,B1)采用二分法,找到数据集ds1中id和当前格的值相等、class和A1相等且sex和B1相等的记录,返回其name字段值Bselect_one()此函数同数据集函数bselect1colcount()函数说明:获得数据集的列数语法:datasetName.colcount()返回值:整数举例:例1:ds1.colcount() 获得ds1数据集的列数,整数类型函数说明:计算数据集当前记录行集中,满足条件的记录数count()语法:datasetName.count({filterExp})参数说明:filterExp 条件表达式,如果全部选出,则不要此参数,返回值:整数举例:例1:ds1.count()例2:ds1.count(true)含义同上,但是运算速度比ds1.count()慢,因此当记录全部选出时,建议不要true例3:ds1.count(quantity>500)表示从ds1当前记录行集中选出quantity>500的记录进行计数,返回记录数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
集算报表与润乾报表的函数语法对比
集算报表5.0在保留润乾报表V4.x的核心功能外,进行了优化和精简,其中报表函数也做了适当优化,这里就常见计算来比较一下二者函数语法之间的差异。
对比函数一览表
1数据集函数
1.1d s.group()
润乾报表:
datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGr oupExp}}}}}})
集算报表:
datasetName.group(<selectExp>{,filter_exp};{sort1}{:order1},…;{ groupSortExp }:{ groupOrderExp })
选项:
@r 是否root数据集表达式
主要改变:
1、增加@r函数选项,取代原rootGroupExp表达式参数
2、取消分组前记录的排序顺序descExp参数
3、更改排序表达式和排序顺序参数语法
举例:
1.2d s.select()/ds.select1()
润乾报表:
datasetName.select( <select_exp>{, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} ) datasetName.select1(selectExp{,filterExp{,rootGroupExp}})
集算报表:
将原ds.select()和ds.select1()合并为ds.select()语法如下
datasetName.select(<select_exp>{: order_exp},{ filter_exp },{num_exp},{distinct_exp})选项:
@r 是否root数据集表达式
主要改变:
1、增加@r函数选项,取代原rootGroupExp表达式参数
2、取消数据的排序顺序descExp参数
3、更改排序顺序参数语法
举例:
1.3d s.sum()
润乾报表:
datasetName.sum(selectExp{,filterExp{,rootGroupExp}})
集算报表:
datasetName.sum(selectExp{,filterExp})
选项:
@r 是否root数据集表达式
主要改变:
1、增加@r函数选项,取代原rootGroupExp表达式参数举例:
2单元格函数
2.1c all()/call2()
润乾报表:
call(sqlStatement{,arg1{,arg2{,arg3{,……}}}})
call(dbName,sqlStatement{,arg1{,arg2{,arg3{,……}}}})
集算报表:
将原call()和call2()合并为call(),语法如下
call(sqlStatement{,arg1{,arg2{,arg3{,……}}}}{;dbName})
主要改变:
1、数据源参数顺序改变,并作为可选参数
举例:
2.2i f()
润乾报表:
if(boolExp1,valueExp1{,boolExp2,valueExp2 {,boolExp3,valueExp3 {, {defaultExp}}}})集算报表:
if(x1:y1,…,xk:yk;y)
主要改变:
1、函数参数分隔符变化
举例:
2.3n vl()
润乾报表:
nvl( valueExp1, valueExp2 )
集算报表:
ifn( valueExp1, valueExp2 )
主要改变:
1、函数名称变化
举例:
2.4s um()
润乾报表:
sum(expression)
sum(cellExp,exp)
集算报表:
sum(expression)
sum(cellExp,exp)
主要改变:
无
举例:
2.5v alue()
表示当前单元格的值,集算报表与润乾报表用法相同,没有改变。
3时间日期函数
3.1d ate()
润乾报表:
date(stringExp)
集算报表:
date(stringExp)
date(year,month,day)
主要改变:
1、增加函数参数类型
举例:
3.2d atetime()/datetime2()
润乾报表:
dateTime(string)
dateTime(long)
datetime2(string, format)
集算报表:
将原dateTime()和dateTime2()合并为datetime(),语法如下datetime(string)
datetime(long)
主要改变:
无
3.3d aysAfter()
润乾报表:
daysAfter(dateExp1, dateExp2)
集算报表:
interval (datetimeExp1,datetimeExp2)
选项:
@y 计算两个日期时间型数据相差几年
@q 计算两个日期时间型数据相差几季度
@m 计算两个日期时间型数据相差几月
@s 计算两个日期时间型数据相差几秒
@ms 计算两个日期时间型数据相差几毫秒
@r 计算两个日期时间型数据间隔,返回实数
缺省为计算两个日期时间型数据相差几天主要改变:
1、函数名称变化
2、增加了若干函数选项,以满足不同需要
举例:
3.4l astday()/lastmonth()/lastyear()/relDate()/relTime()
润乾报表:
lastday(dateExp)
lastmonth( dateExp )
lastyear( dateExp )
relDate(dateExp, nExp)
relTime(datetimeExp, nExp)
集算报表:
将原lastday()/lastmonth()/lastyear()/relDate()/relTime()合并为afert(),语法如下after (dateExp, n)
选项:
@y 计算与指定日期相差n年的新日期数据
@q 计算与指定日期相差n季度的新日期数据
@m 计算与指定日期相差n月的新日期数据
@s 计算与指定日期相差n秒的新的日期时间数据
@ms 计算与指定日期相差n毫秒的新的日期时间数据
缺省时表示算出给定日期n天后的新日期数据
主要改变:
1、函数名称变化
2、增加若干函数选项以满足不同需要
举例:
3.5m onthbegin()/monthend()/queterbegin()/quaterend()/wee
kbegin()/weekend()
润乾报表:
monthbegin( dateExp )
monthend( dateExp )
quaterbegin( dateExp )
quaterend( dateExp )
weekbegin(dateExp)
weekend(dateExp)
集算报表:
将原monthbegin()/monthend()/queterbegin()/quaterend()/weekbegin()/weekend()合并为pdate(),语法如下
pdate (dateExp)
选项:
@w 获得指定日期所在星期的星期天
@we 获得指定日期所在星期的星期六
@m 取得指定日期所在月的月首
@me 取得指定日期所在月的月末
@q 取得指定日期所在季度的首日
@qe 取得指定日期所在季度的末日
缺省为获得指定日期所在星期的星期天
主要改变:
1、函数名称变化
2、增加若干函数选项以满足不同需要
举例:
4字符串函数
4.1l ike()
润乾报表:
like( stringExp, formatExp{, ignoreCase} )
集算报表:
like( stringExp, formatExp{, ignoreCase} )
主要改变:
无
举例:
4.2r plc()
润乾报表:
rplc( srcExp,subStrA,rplcStrB{,boolExp})
集算报表:
replace( src,a,b)
选项:
@q 引号里的字符不需要进行替换
主要改变:
1、函数名称变化
2、增加@q选项替代原boolExp参数,使引号里的字符不需要进行替换举例:
4.3s plit()
润乾报表:
split( srcExp,sepExp{,boolExp})
集算报表:
split( srcExp,sepExp{,boolExp})
主要改变:
无
举例:
5数据类型转换函数
5.1s tr()
润乾报表:
str(expression{, format})
集算报表:
string(expression{, format})
主要改变:
1、函数名称变化
举例:。