润乾报表函数

合集下载

润乾报表常用函数

润乾报表常用函数

润乾报表常用函数1.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)2.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字段降序排列3.Int函数说明:将字符串或数字转换成整数语法:int( string ) int( number )参数说明:string 需要转换的字符串表达式number 数字,如果带有小数位,转换后小数位被截掉返回值:32位整数示例:例1:int( "100" ) 返回:100例2:int( 100.1 ) 返回:100例3:int(100.9999) 返回:1004.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("男","女","不定"))5.Select1函数说明:从数据集中按顺序检索到符合过滤条件的第一条记录,返回其selectExp值语法:datasetName.select1(selectExp{,filterExp{,rootGroupExp}})参数说明:selectExp 要选择的字段列名/列号,,也可以是表达式。

润乾报表常用函数

润乾报表常用函数

润乾报表常‎用函数1.to函数说‎明:生成一组连‎续的整数数‎据语法: to(start‎E xp,endEx‎p{,stepE‎x p})参数说明:start‎E xp 整数数据开‎始的表达式‎endEx‎p整数数据结‎束的表达式‎stepE‎x 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.selec‎t函数说明‎:从数据集的‎当前行集中‎选取符合条‎件的记录语法:datas‎e tNam‎e.selec‎t( <selec‎t_exp‎>{, desc_‎e xp{, filte‎r_exp‎{,sort_‎e xp{,rootG‎r oupE‎x p}}}} )datas‎e tNam‎e.selec‎t( <selec‎t_exp‎>, , <filte‎r_exp‎> )//适用于不需‎排序或数据‎集中已排好‎序参数说明:selec‎t_exp‎:要选择的字‎段列名/列号,,也可以是表‎达式。

列号用#n 表示,例如#0代表第0‎列,#1代表第1‎列,依此类推desc_‎e xp: 指定数据排‎序的顺序,true表‎示降序排列‎,false‎表示升序排‎列。

filte‎r_exp‎:数据过滤表‎达式,如果全部选‎出,则此参数省‎略,仅用“,”占位。

sort_‎e xp: 数据排序表‎达式。

当此项为空‎时先检查d‎e sc_e‎x p是否为‎空,如果为空,则不排序,否则使用s‎e lect‎_exp排‎序。

rootG‎r oupE‎x p 是否roo‎t数据集表‎达式返回值:一组数据的‎集合,数据类型由‎s elec‎t_exp‎的运算结果‎决定函数示例:例1:ds1.selec‎t( name ) 从数据源d‎s1中选取‎n ame字‎段列的所有‎值, 不排序例2:ds1.selec‎t( #2, true ) 从数据源d‎s1中选取‎第二个字段‎列的所有值‎并降序排列‎例3:ds1.selec‎t( name,false‎,sex=='1') 从数据源d‎s1中选取‎性别为男性‎的name‎字段列的值‎并升序排列‎例4:ds1.selec‎t( name, true, sex=='1', id ) 从数据源d‎s1中选取‎性别为男性‎的name‎字段列的值‎并按id字‎段降序排列‎3.Int函数‎说明:将字符串或‎数字转换成‎整数语法: int( strin‎g ) int( numbe‎r )参数说明:strin‎g需要转换的‎字符串表达‎式numbe‎r数字,如果带有小‎数位,转换后小数‎位被截掉返回值:32位整数‎示例:例1:int( "100" ) 返回:100例2:int( 100.1 ) 返回:100例3:int(100.9999) 返回:1004.map函数‎说明显示值对照‎表函数,从对照表中‎找出当前单‎元格对应值‎的显示值,没有则返回‎n ull语法: map(value‎L istE‎x p, displ‎a yLis‎t Exp)参数说明:value‎L istE‎x p 真实值列表‎,可以是可扩‎展单元格或‎结果为集合‎列表的表达‎式displ‎a yLis‎t Exp 显示值列表‎,可以是可扩‎展单元格或‎结果为集合‎列表的表达‎式真实值列表‎和显示值列‎表一一对应‎返回值:字符型,和当前格真‎实值对应的‎显示值示例:例1:map(to(1,3),list("男","女","不定"))例2:map(arg1,arg2) 其中arg‎1为1,2,3组成的参‎数组,arg2为‎"男","女","不定"组成的字符‎串组例3:map(list(1,2,3),list("男","女","不定"))5.Selec‎t1函数说‎明:从数据集中‎按顺序检索‎到符合过滤‎条件的第一‎条记录,返回其se‎l ectE‎x p值语法: datas‎e tNam‎e.selec‎t1(selec‎t Exp{,filte‎r Exp{,rootG‎r oupE‎x p}})参数说明: selec‎t 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()函数相同,通过第一个参数,可以实现不同的单元格连接不同的数据源。

润乾报表_填报表用ajax实现自动填充单元格

润乾报表_填报表用ajax实现自动填充单元格

填报表用ajax实现关联单元格自动填充在做填报表时,可能会遇到这样的需求,某个单元格值发生变化后,其他一些单元格值也跟着发生变化,就是局部刷新报表。

如果是简单的加减乘除运算,可以在单元格的自动计算里面实现;如果关联单元格显示的内容是从数据库中取出来的,就不能写加减乘除表达式来实现了,需要用ajax来实现。

比如一个货物订单表,当选择完产品后,产品的单价、库存量自动填充,然后用户根据这些信息填写订货量。

实现思路:利用报表单元格的自动计算功能完成不同单元格信息的自动关联,自动计算表达式采用的是js函数,js函数中调用ajax,ajax中调用servlet查询数据库检索订单、库存量信息,返回给相应的单元格。

实现过程:制作上面的报表,A3单元格设置下拉数据集,用来选择产品,在B3单元格自动计算里面设置表达式“getValue("单价",A3)”(第一个参数是要查询的字段,第二个参数是关联的单元格,返回数据库中A3选择的产品对应的单价),C3单元格自动计算的表达式“getValue("库存量",A3)”,单元格D3设置为可写。

解析报表的jsp如下<%@ page contentType="text/html; charset=GBK" %><%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %><html><body><%request.setCharacterEncoding( "GBK" );%><report:html name="report1" reportFileName="testAjax.raq"/><script language="javascript">var xmlHttp;var result;//初试化XMLHttpRequest对象function createXMLHttpRequest(){if(window.ActiveXObject){x mlHttp=new ActiveXObject("Microsoft.XMLHTTP");}else if(window.XMLHttpRequest){xmlHttp=new XMLHttpRequest();}}function call(){if (xmlHttp.readyState == 4){//响应内容解析完成,可以在客户端调用了if (xmlHttp.status == 200){//http请求一切正常,对GET和POST请求的应答文档跟在后面result = decodeURI(xmlHttp.responseText);}}}//根据关联单元格、字段名称返回该字段的值function getValue(field, orderID){//alert("aa");createXMLHttpRequest();varurl="<%=request.getContextPath()%>/ajax_Servlet2?selectField="+ field +"&orderID=" + orderID;xmlHttp.onreadystatechange = call;xmlHttp.open("GET", url, false);xmlHttp.send(null);return result;}</script></body></html>Servlet如下:public class AjaxServlet_2 extends HttpServlet{Connection conn ;Statement stmt;ResultSet rs;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{response.setCharacterEncoding("GBK");Context ctx = Context.getInitCtx();try {conn =ctx.getConnectionFactory(ctx.getDefDataSourceName()).getConnection();stmt = conn.createStatement();} catch (Exception e) {e.printStackTrace();}String selectField = request.getParameter("selectField");String orderID = request.getParameter("orderID");if(!"".equals(selectField) || selectField == null){String selectSQL = "SELECT "+ selectField +" FROM 产品 where 产品ID="+ orderID;try {rs = stmt.executeQuery(selectSQL);if(rs.next()){PrintWriter out=response.getWriter();out.write(URLEncoder.encode(rs.getString(selectField).trim(),"UTF -8"));out.flush();out.close();}} catch (SQLException e) {e.printStackTrace();}finally{try {if(stmt != null) stmt.close();if(rs != null) rs.close();if(conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}}}页面效果如下上图中选择了“大众奶酪”,当产品名称列失去焦点后,效果如下上面的方法就可以实现用ajax自动填充关联单元格,方法比较简单,实现报表的局部刷新。

润乾报表函数

润乾报表函数

润乾报表函数个人中心我的主页好友消息站内消息:无新消息提醒互动请求:2条新系统通知:5条新zln 米老鼠|装扮|设置| 退出糍糍1025的空间主页博客相册|个人档案|好友|i贴吧查看文章润乾报表函数2 转2011-09-05 16:55 函数说明:根据第一个表达式的值是否为空,若为空则返回指定值语法:nvl( valueExp1, valueExp2 )参数说明:valueExp1 需要计算的表达式,其结果不为空时返回其值valueExp2 需要计算的表达式,当valueExp1结果为空时返回此值返回值:valueExp1或valueExp2的结果值示例:例1:nvl(A1,&quot;&quot;) 表示当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,第一个集合为&lt;0,不包含0,第二个集合为&gt;=0且&lt;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个集合,依次分别是&lt;0、&lt;10(此集合中元素必定&gt;=0)、&lt;100(此集合中元素必定&gt;=10)及其它(即&gt;=100);在eqExp返回true的情况下将整数集或实数集划分成4个集合,分别是&lt;=0、&lt;=10(且&gt;0)、&lt;=100(且&gt;10)及其它(即&gt;100);对于数组{100,10,0},eqExp为false时也划分成4个集合,分别为&gt;100,&gt;10(且&lt;=100),&gt;0(且&lt;=10)及其它(即&lt;=0);eqExp为true时则为&gt;=100,&gt;=10(且&lt;100),&gt;=0(且&lt;10)及其它(即&lt;0)函数说明:取得当前页的页码,注意,本函数只是在分页后才有效语法:pno({booleanExp})参数说明:booleanExp 表达式返回值:当前页的页码。

润乾报表4.0高级设计(一)

润乾报表4.0高级设计(一)
基本概念 扩展模型 主格模型 层次坐标 格集 线性坐标 平面坐标
第10页
1.2.1 运算模型基本概念
集合函数
运算结果为集合的函数,我们称为集合函数。
集合函数包括:group(),select(),list(), query(),call(),to()等。
集合表达式/单值表达式
计算结果为集合的表达式称为集合表达式; 计算结果为单值的表达式称为单值表达式。
第11页
集合表达式与单值表达式
集合表达式 单值表达式
第12页
集合函数
Select Group Call/Call2 query/query2 List …
第13页
Select()
语法:
datasetName.select( <select_exp>{, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} )
第14页
练习
网格式报表
第15页
group()
语法:
datasetName.group(selectExp{,descExp{,filterExp{,sortExp {,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})
=ds1.sum(# 5,#4==A1)
一组数据的集合,数据类型由sql语句的第一个选出字段决定
第22页
query2()
函数说明:
执行sql语句,返回结果数据集合,只能返回单列数据,如果sql语 句中有多个字段,则返回第一个字段的结果值。和query()函数的差别 在于多了第一个参数,第一个参数用于制定数据源名称,通过他可以 实现不同单元格从不同数据源获取数据 语法: query2(dbname, sqlStatement{,arg1{,arg2{,arg3{,……}}}} 参数说明: dbname 数据库逻辑名,为null表示缺省数据库 sqlStatement 合法的sql语句 arg(n) sql语句的参数,可以是常数也可以是表达式 返回值: 一组数据的集合,数据类型由sql语句的第一个选出字段决定

润乾报表之分组

润乾报表之分组

润乾报表之分组
这次任务是要实现报表分组,设计图如下↓
预览效果图如下↓
这次主要是有俩个分组,并且还有序号。

尝试直接写分组函数在单元格C5但是没有⽣效。

解决⽅案:
1、在A5写了⼀个隐藏的列,单元格属性【可视】勾掉即可;此时的效果是看不到A5
2、将G5的分组语句【=DATA.group(APPLICATION_NO;APPLICATION_NO:-1)】放在A5⾥⾯;
3、将G5的左主格设置为A5;此时的效果,识别码字段已经事倒叙排列
4、C5的分组语句正常写,左主格设为A5;此时的效果是批号字段也⼜来分组效果
5、B5⽤来显⽰序号,【=seq(D9)】设置左主格为D9;此时的效果即为预览效果图
PS:这⾥说⼀下group函数,函数后⾯的数字有俩个值-->1、-1使⽤来排序的设置,默认是1即正序,-1是倒序。

润乾集算报表优化应用结构之实现T+0报表

润乾集算报表优化应用结构之实现T+0报表

润乾集算报表优化应用结构之实现T+0报表在报表项目中,客户越来越关注源数据的实时性,希望看到最新发生的数据在报表中体现出来。

但是,传统的报表工具+数据仓库+ETL 方式很难做到这一点,往往是只能看到昨天、上周甚至是上个月的情况,也就是T+1、T+7、T+30统称T+n 报表。

很难实现T+0报表,也就是能体现实时信息的报表。

分析其原因在于:1、如果报表的历史数据和最新数据都从客户的生产系统读取,虽然可以实现T+0报表,但是会对生产数据库造成压力,影响客户的业务。

2、如果采用数据仓库的方式,那么ETL 从生产库中取出数据,需要较长的“窗口时间”,一般是客户下班之后,到第二天早上上班之前,所以客户能看到的最新数据也只能是T+1。

3、虽然理论上可以从历史库中和生产库中同时取数据形成实时报表,但是一般的报表工具都不具备跨库取数计算能力,其他的跨库计算方案又比较复杂,很难实施。

可以考虑采用润乾集算报表提供的T+0报表方案,利用集算报表的混合数据源能力实现低成本的实时报表。

实现思路是:把不会发生变动的大量历史数据采用数据文件存储,少量新数据从生产库读取,在保证报表实时性的同时,降低了历史数据存储的成本,减少了报表系统造成的生产数据库的负载。

传统T+n 方案和集算报表T+0方案结构对比示意图如下:文件系统润乾集算报表:T+0报表文件报表工具传统结构:T+n 报表上图润乾计算报表结构中“导出(非实时)”是指在非工作时间(例如晚上),将生产数据库新增数据同步到历史数据的数据文件中。

具体实现是采用润乾集算器提供的命令行执行方式,配合操作系统定时任务方式,详见集算器教程。

这里通过“各州销售统计表”来说明一下润乾集算报表T+0方案的具体做法,报表如下:上图报表中的历史销售数据量很大,来自于数据文件。

同时,为了保证报表的实时行,当天的少量数据直接从生产数据库(db2)取出。

具体实现步骤如下:A1:连接预先配置好的生产数据库(db2)。

润乾报表常用函数

润乾报表常用函数

润乾常用函数数值计算函数说明: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()函数相同,通过第一个参数,可以实现不同的单元格连接不同的数据源。

润乾报表调用参数

润乾报表调用参数

润乾报表调用参数润乾报表是一种常用的财务报表分析工具,可以帮助企业对财务状况进行全面的分析和评估。

在使用润乾报表时,我们需要了解如何正确调用参数,以获取准确的报表数据。

本文将介绍润乾报表的调用参数及其使用方法,帮助读者更好地使用润乾报表进行财务分析。

一、调用参数的作用和分类润乾报表的调用参数是指在生成报表时需要提供的信息,包括报表类型、时间范围、公司代码等。

不同的调用参数可以实现不同的报表功能。

根据调用参数的不同,润乾报表的调用参数可以分为以下几类:1. 报表类型参数:用于指定要生成的报表类型,比如资产负债表、利润表、现金流量表等。

通过设置不同的报表类型参数,可以获取不同类型的财务报表数据。

2. 时间范围参数:用于指定报表的时间范围,比如年度报表、季度报表、月度报表等。

根据业务需要,可以灵活调整时间范围参数,以获取特定时间段内的财务数据。

3. 公司代码参数:用于指定要查询的公司代码,适用于多公司集团财务分析的场景。

通过设置不同的公司代码参数,可以获取不同公司的财务报表数据。

4. 其他参数:润乾报表还提供了一些其他的调用参数,用于实现更复杂的报表功能。

比如币种参数、科目代码参数、部门代码参数等,可以根据具体需求进行设置。

二、调用参数的使用方法使用润乾报表进行财务分析时,正确设置调用参数是非常重要的。

下面以资产负债表为例,介绍润乾报表调用参数的使用方法。

1. 首先,打开润乾报表软件,在报表模块中选择要生成的报表类型,比如资产负债表。

2. 然后,在报表设置中找到调用参数选项,点击进入参数设置界面。

3. 在参数设置界面中,根据需要设置报表的时间范围参数。

比如如果要生成年度报表,可以选择起始日期和结束日期为一年的时间范围。

4. 接下来,设置公司代码参数。

如果润乾报表支持多公司查询,可以选择要查询的公司代码,以获取相应公司的财务报表数据。

5. 如果需要对报表数据进行进一步筛选,可以设置其他参数,比如币种参数、科目代码参数等。

润乾rank函数使用 -回复

润乾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. 带有并列排名:在某些情况下,可能会出现多个值在一组数据中并列排名的情况。

润乾报表教程

润乾报表教程

润乾报表V4.0 高级教程北京润乾信息系统技术有限公司第1章序言中国式报表有别于西方报表,中国式报表很复杂!润乾报表是专门用于解决中国式复杂报表的报表工具!润乾报表软件的核心特点在于开创性地提出了非线性报表数学模型,采用了革命性的强关联语义模型、多源关联分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备,报表设计的效率提高了一个数量级。

润乾报表采用JA V A开发,由两个部分构成:报表设计器和报表服务器。

润乾报表是一个很容易掌握的报表工具,对于复杂的中国式报表,完全不需要编程和复杂sql,只需要学习简单的表达式规则,就可以完成。

为了帮助读者快速掌握润乾报表的非线性模型用法,我们在《快逸报表V4.0入门教程》的基础上编写了这份《润乾报表V4.0高级教程》,希望读者先学习《快逸报表V4.0入门教程》,再来学习这份文档,效果更好。

本教程沿袭《快逸报表V4.0入门教程》的思路,避免复杂的概念,通过由浅入深的实例,深入浅出的讲解,辅以有针对性的练习题,一步一步帮助读者迅速掌握润乾报表的非线性报表模型的理论和操作。

只要你照着本教程去做,半天就可以初步掌握润乾报表。

希望在轻轻松松的过程中,你能很快地掌握非线性报表设计!第2章多源关联分片这份文档的思路,不再强调界面操作上的东西,比如某个按钮在哪里点,某个对话框怎么打开,更多地强调表达式怎么写,模型的原理是啥,表达式的规则是啥,用到的函数等2.1 多层交叉报表2.1.1一个例子我们先看下面这个多层交叉报表:[截图]从上面这个报表可以看出,这是一个多层的交叉报表,上边有两层动态横向扩展的上表头,左边有两层动态纵向扩展的左表头,中间的交叉点进行汇总统计,统计值和上表头、左表头息息相关。

我们看一下这样的报表在润乾报表中是如何设计的:1、首先定义数据集:[列出这个报表用到的数据集及其sql即可]2、写入单元格表达式,如下图所示:[设计界面截图,把格子拉大,表达式尽量看全]从上图可以看出,上表头分别通过[ ]格和[ ]格横向扩展形成,左表头通过[ ]格和[ ]格纵向扩展形成,中间的交叉点利用[sum]函数进行汇总,于是一个多层交叉报表很轻松就完成了。

润乾报表使用手册

润乾报表使用手册

报表使用手册XX股份有限公司中国济南目录1概述.............................................................................................................................. - 3 - 2安装.............................................................................................................................. - 3 -2.1准备好安装程序.......................................................................................... - 3 -2.2安装中的选项.............................................................................................. - 3 -2.3授权文件配置.............................................................................................. - 4 - 3报表制作...................................................................................................................... - 5 -3.1报表制作要求.............................................................................................. - 5 -3.2制作一张报表的步骤.................................................................................. - 5 -3.3启动报表设计器.......................................................................................... - 6 -3.4连接数据源.................................................................................................. - 7 -3.4.1 数据源对话框......................................................................................... - 7 -3.4.2 编辑数据源............................................................................................. - 7 -3.4.3 注意事项................................................................................................. - 9 -3.5设计报表格式.............................................................................................. - 9 -3.5.1 格式设计................................................................................................. - 9 -3.5.2 需注意事项........................................................................................... - 10 -3.6定义参数.................................................................................................... - 10 -3.6.1 参数的编辑........................................................................................... - 10 -3.6.2 常用参数举例....................................................................................... - 11 -3.7定义宏........................................................................................................ - 11 -3.7.1 宏的编辑............................................................................................... - 11 -3.7.2 常用宏举例........................................................................................... - 12 -3.8建立数据集................................................................................................ - 12 -3.8.1 数据集的编辑....................................................................................... - 12 -3.8.2 常用数据集举例................................................................................... - 13 -3.9设置单元格属性........................................................................................ - 14 -3.9.1 数据集在单元格中应用....................................................................... - 14 -3.9.2 显示格式............................................................................................... - 14 -3.9.3 设置预警条件....................................................................................... - 15 -3.9.4 增加动态背景色................................................................................... - 15 -3.9.5 按参数隐藏列....................................................................................... - 16 -3.9.6 主格应用............................................................................................... - 16 -3.10报表预览.................................................................................................... - 17 -3.11报表发布.................................................................................................... - 17 - 4报表部署.................................................................................................................... - 18 -4.1部署位置.................................................................................................... - 18 -4.2Web中显示................................................................................................ - 18 - 5重要概念.................................................................................................................... - 19 -5.1数据源........................................................................................................ - 19 -5.2数据集........................................................................................................ - 19 -5.3参数............................................................................................................ - 19 -5.4宏定义........................................................................................................ - 22 -5.5单元格........................................................................................................ - 22 -5.6主格............................................................................................................ - 23 - 6常用函数.................................................................................................................... - 25 -6.1数据集函数................................................................................................ - 25 -6.1.1 select() .................................................................................................... - 25 -6.1.2 select1() .................................................................................................. - 25 -6.1.3 count() .................................................................................................... - 26 -6.2单元格函数................................................................................................ - 26 -6.2.1 if() ........................................................................................................... - 26 -6.2.2 row() ....................................................................................................... - 26 -6.2.3 value() .................................................................................................... - 26 -6.3字符串函数................................................................................................ - 26 -6.3.1 pos() ....................................................................................................... - 26 -6.3.2 mid() ....................................................................................................... - 26 -6.4数据类型转换函数.................................................................................... - 26 -6.4.1 dateTime() .............................................................................................. - 26 -6.4.2 str() ......................................................................................................... - 26 -1概述该文档主要满足iES-E200电量采集系统中自定义报表制作编写。

润乾报表高级设计(二)

润乾报表高级设计(二)

第39页
练习-行后分页2
要求:做一张下图所示的合同单,一个合同单在 一页里显示
第40页
练习-行后分页3
要求:每一页显示一个合同单,每个合同明细不 足5行的补足空行。
第41页
布局行数/列数
布局行数:如果报表是按照行数分页的,那么一张打印 布局列数:如果报表是按照行数分页的,那么一张打印 举例:
纸上可能打印多页报表,该参数设定一张打印纸上纵向可 以打印几排报表 纸上可能打印多页报表,该参数设定一张打印纸上横向可 以打印几排报表
第55页
尽量在sql里排序
报表中往往需要对数据进行排序,排序运算可以 在数据库中进行,也可以在报表端进行,如果报 表中的排序规则是确定的,那么建议排序操作选 择在数据库端进行,因为数据库中有索引,且数 据库是c语言开发的,数据运算速度快。
第56页
尽量在sql里过滤
报表很多时候并不需要对表中的所有记录进行操 作,而是对部分满足条件的记录进行操作,因此 建议过滤操作在数据库中进行,这样取到报表服 务器端的记录数大大减少,既加快了取数的速度 ,也加快了报表的运算速度,因为报表需要处理 的数据少了。
第51页
练习
主子表 按照上例的表样分别用单数据集和多数据集实现
第52页
2.2 写sql的技巧
尽量在sql里进行group
对于汇总类型的报表,往往需要进行分组聚集运算,如果 在数据库中先进行一次分组聚集,能够大大减少取到报表 服务器的记录数,加快取数和报表运算的速度。
第53页
第一种:select 产品,客户,销量 from 购买记录表
要求:通过里程碑图展现某公司各个项目计划与 实际完成时间的对比
第25页
时间走势图

润乾报表扩展函数

润乾报表扩展函数

润乾报表扩展函数
润乾是一款企业级报表工具,提供了丰富的报表扩展函数以支持各种复杂的报表需求。

以下是一些常用的润乾报表扩展函数:
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的产品进行升序排序,以便找出销售额较高的产品。

润乾报表排序函数的使用非常灵活,可以根据具体的需求灵活设置排序字段和排序方式。

同时,润乾报表还提供了其他一些辅助函数,如去重函数、筛选函数等,可以与排序函数结合使用,进一步提升数据处理的效率和准确性。

在实际应用中,润乾报表排序函数被广泛应用于各种报表数据的排序和分析工作中。

它可以帮助用户快速准确地找出数据中的最大值、最小值、前几名、后几名等信息,从而更好地理解和利用数据。

润乾报表排序函数是一种非常实用的数据处理函数,可以帮助用户对报表数据进行快速准确的排序和分析。

通过合理使用该函数,用户可以更好地理解和利用报表数据,为决策提供有力的支持。

润乾动态参数if写法

润乾动态参数if写法

润乾动态参数的 IF 写法可以使用 IF 函数或 CASE 表达式来实现。

1. 使用 IF 函数:sql复制代码SELECT IF(condition, true_value, false_value) AS result;在上面的语法中,condition 是要测试的条件,true_value 是条件为真时返回的值,false_value 是条件为假时返回的值。

例如,假设我们有一个名为 age 的变量,我们想要根据年龄是否大于等于 18 来返回不同的值,可以这样写:sql复制代码SELECT IF(age >= 18, '成年人', '未成年人') AS result;如果 age 大于等于 18,返回 '成年人',否则返回 '未成年人'。

2. 使用 CASE 表达式:sql复制代码SELECT CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE default_resultEND AS result;在上面的语法中,condition1, condition2, ... 是要测试的条件,result1, result2, ... 是对应条件为真时返回的值,default_result 是所有条件都为假时返回的默认值。

例如,假设我们有一个名为 gender 的变量,我们想要根据性别返回不同的值,可以这样写:sql复制代码SELECT CASE genderWHEN'男'THEN'先生'WHEN'女'THEN'女士'ELSE'未知'END AS title;如果 gender 为 '男',返回 '先生',如果为 '女',返回 '女士',否则返回 '未知'。

自定义函数实现润乾报表call函数功能

自定义函数实现润乾报表call函数功能

自定义函数实现报表call函数功能关键字:自定义增强函数call 存储过程使用前注意由于增强函数是授权控制的功能点,所以这种在简单版本下实现增强函数的功能请慎用。

本文介绍的方式适用于客户开发时使用的全功能临时授权,而正式购买的版本中无增强函数,销售要求在现有版本上实现增强函数的功能。

使用时可根据实际情况适当采用。

问题背景某客户购买的报表开发版(无增强套件),而他们在开发报表阶段使用的是全功能临时授权,报表中使用了大量的call query seq等增强函数,正式上线时发现报表不可用,提示使用了增强函数。

客户处已无预算增购增强套件,销售要求在现有版本上实现报表call函数等功能。

问题分析报表call函数的作用是调用存储过程,并将输出参数返回给报表。

可以通过自定义函数,在程序里调用存储过程,并将输出参数作为自定义函数的返回值返回给报表。

所以在自定义函数中要实现如下几块功能:1、解析自定义函数中的传递的报表表达式参数,如:A1;2、根据相应参数调用存储过程并接收存储过程输出参数;3、将输出参数值返回具体实现自定义函数名:callProcedure,参数:存储过程名,输入参数1、接收参数,并解析// 取得第一个参数,默认为表达式,需要把该表达式算出来,结果才是函数的参数值Expression param1 = (Expression) this.paramList.get(0);Expression param2 = (Expression) this.paramList.get(1);// 算出参数值Object result1 = Variant2.getValue(param1.calculate(ctx, isInput),false, isInput);Object result2 = Variant2.getValue(param2.calculate(ctx, isInput),false, isInput);2、调用存储过程//获取ctx中保存的连接工厂连接conn = ctx.getConnectionFactory("mysqlProc").getConnection();//调用存储过程cstmt = conn.prepareCall("{call "+procName+"(?,?)}");cstmt.setString(1, inParam);//设置第一个输入参数值cstmt.registerOutParameter(2, Types.VARCHAR);//将 OUT 参数注册为 JDBC 类型 sqlTypecstmt.execute();outParam = cstmt.getString(2);//接收输出参数的值3、将输出参数值返回给报表return outParam;//函数返回值源程序:1、mysql存储过程create procedure nameProc(in id varchar(10),out name varchar(50))beginset name =CONCAT(id,'aaa');end2、自定义函数CallProcedure.javapackage customFunction;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Types;import com.runqian.base4.resources.EngineMessage;import com.runqian.base4.resources.MessageManager;import com.runqian.base4.util.ReportError;import com.runqian.report4.model.expression.Expression;import com.runqian.report4.model.expression.Function;import com.runqian.report4.model.expression.Variant2;import ermodel.Context;public class CallProcedure extends Function{public Object calculate(Context ctx, boolean isInput) { /***计算报表参数*///判断参数个数if (this.paramList.size() < 1) {MessageManager mm = EngineMessage.get();throw new ReportError("encrypt:"+ mm.getMessage("function.missingParam"));}// 取得第一个参数,默认为表达式,需要把该表达式算出来,结果才是函数的参数值Expression param1 = (Expression) this.paramList.get(0);Expression param2 = (Expression) this.paramList.get(1);if (param1 == null) {// 判断参数是否为空MessageManager mm = EngineMessage.get();throw new ReportError("encrypt:"+mm.getMessage("function.invalidParam"));}if (param2 == null) {// 判断参数是否为空MessageManager mm = EngineMessage.get();throw new ReportError("encrypt:"+mm.getMessage("function.invalidParam"));}// 算出参数值Object result1 = Variant2.getValue(param1.calculate(ctx, isInput),false, isInput);Object result2 = Variant2.getValue(param2.calculate(ctx, isInput),false, isInput);// 判断第一个参数值是否为空if (result1 == null) {return null;}if (result2 == null) {return null;}String procName = result1.toString();//存储过程名String inParam = result2.toString();//输入参数Connection conn = null;CallableStatement cstmt = null;Statement stmt = null;ResultSet rs = null;String outParam = null;try {//获取ctx中保存的连接工厂连接conn =ctx.getConnectionFactory("mysqlProc").getConnection();//调用存储过程cstmt = conn.prepareCall("{call "+procName+"(?,?)}");cstmt.setString(1, inParam);//设置第一个输入参数值cstmt.registerOutParameter(2, Types.VARCHAR);//将 OUT 参数注册为 JDBC 类型 sqlTypecstmt.execute();outParam = cstmt.getString(2);//接收输出参数的值} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(cstmt!=null)cstmt.close();if(conn!=null)conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return outParam;//函数返回值}}。

润乾先计算扩展格后合计

润乾先计算扩展格后合计

润乾先计算扩展格后合计
扩展格是指将一组数据进行扩展,使其更易于分析和理解。

通过计算扩展格后的合计,可以更好地了解数据的总体情况和趋势。

以下是一个超过1200字的例子来说明如何计算扩展格后的合计。

假设我们有一个销售部门的销售数据,包括销售员的姓名、销售额和销售日期。

我们想要计算每个月的销售额,并求得合计。

首先,我们需要从原始数据中提取月份信息,可以通过函数`MONTH`提取日期的月份。

假设销售数据存储在A1:C10的单元格中,我们可以在D2单元格中输入以下公式来提取月份信息:`=MONTH(C2)`
然后,我们需要找到每个月的销售额。

我们可以利用透视表来实现这个目标。

点击插入选项卡上的"透视表"按钮,在弹出的对话框中选择原始数据的范围(A1:C10),并选择一个新的位置来放置透视表(例如E1单元格)。

在透视表的字段列表中,将"销售额"字段拖放到"值"区域中,并确保它已设置为求和方式。

透视表会自动计算每个月的销售额,并将其显示在新的表格中。

假设计算结果出现在H2:H13单元格中,现在我们可以使用SUM函数来计算销售额的合计。

在H14单元格中输入以下公式:`=SUM(H2:H13)`通过以上步骤,我们已经成功计算了扩展格后的合计。

通过观察H14单元格的数值,我们可以得知整个销售部门的总销售额。

注:以上仅为示例,实际情况中数据的存储方式和计算方法可能会有所不同。

如有需要,请根据具体情况进行相应调整。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表示从employee表中选出sex=&quot;1&quot;的记录,返回其name字段值
函数说明:
执行sql语句,返回结果数据集合,只能返回单列数据,如果sql语句中有多个字段,
则返回第一个字段的结果值。和query()函数的差别在于多了第一个参数,第一个参数
用于制定数据源名称,通过他可以实现不同单元格从不同数据源获取数据
返回值:
valueExp1或valueExp2的结果值
示例:
例1:nvl(A1,&quot;&quot;) 表示当A1为空时,返回空串,否则返回A1
例2:nvl(value(),0) 表示当当前格为空时返回0,否则返回当前格的值
函数说明:
计算分页后的当前页中所有的单元格(cellExp)的个数,注意,本函数只是在分页后才有效
的数组,要求其中元素从小到大排列
eqExp 返回布尔值的表达式,缺省为false,为false表示与ListExp元素比较时不包含等于
ascExp 返回布尔值的表达式,缺省为true,即表示ListExp中元素从小到大排列,否则为从大到小排列
参数说明:
sqlStatement 合法的sql语句
arg(n) sql语句的参数,可以是常数也可以是表达式
返回值:
一组数据的集合,数据类型由sql语句的第一个选出字段决定
示例:
例1:query(&quot;select name from employee where sex=?&quot;,&quot;1&quot;)
函数说明:
取得0-1.0之间的一个随机数
语法:
rand()
参数说明:

返回值:
[0, 1.0)之间的一个随机数,浮点型
示例:
例1:rand() 获得[0, 1.0)之间的一个随机数
例3:quaterbegin(dateTime(&quot;2006-01-15 13:20:30&quot;)) 返回:2006-01-01 13:20:30
函数说明:
取得指定日期所在季度的末日
语法:
quaterend( dateExp )
参数说明:
dateExp 日期或标准日期格式的字符串,
&gt;0(且&lt;=10)及其它(即&lt;=0);
eqExp为true时则为&gt;=100,&gt;=10(且&lt;100),&gt;=0(且&lt;10)及其它(即&lt;0)
函数说明:
取得当前页的页码,注意,本函数只是在分页后才有效
语法:
pno({booleanExp})
示例:
例1:plot( 0, list(0,10,100) ) 返回1,第一个集合为&lt;0,不包含0,第二个集合为&gt;=0且&lt;10,
所以0落在了第二个集合中,集合的编号从0开始起编,依次为0,1,2,3,所以结果为1
例2:plot( 0, list(0,10,100),true,true) 返回0
&lt;100(此集合中元素必定&gt;=10)及其它(即&gt;=100);
在eqExp返回true的情况下将整数集或实数集划分成4个集合,分别是&lt;=0、&lt;=10(且&gt;0)、
&lt;=100(且&gt;10)及其它(即&gt;100);
对于数组{100,10,0},eqExp为false时也划分成4个集合,分别为&gt;100,&gt;10(且&lt;=100),
返回值:
日期时间
示例:
例1:quaterbegin(datetime2(&quot;19800227&quot;,&quot;yyyyMMdd&quot;)) 返回:1980-01-01 00:00:00
例2:quaterbegin(&quot;1972-11-08 10:20:30&quot;) 返回:1972-10-01 10:20:30
语法:
pos(s1, s2{, begin})
参数说明:
s1 待查找子串的母串
s2 被查找的子串
begin 查找的起始位置,缺省为0
返回值:
整数
示例:
例1:pos(&quot;abcdef&quot;,&quot;def&quot;) 返回:3
例2:quaterend(&quot;1972-11-08 10:20:30&quot;) 返回:1972-12-31 10:20:30
例3:quaterend(dateTime(&quot;2006-01-15 13:20:30&quot;)) 返回:2006-03-31 13:20:30
例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个集合,依次分别是&lt;0、&lt;10(此集合中元素必定&gt;=0)、
函数说明:
计算圆周率及其倍数
语法:
pi(numberExp)
参数说明:
numberExp 倍数,此参数省略,则返回圆周率
返回值:
圆周率及其倍数
示例:
例1:pi() 返回:3.141592653589793
例2:pi(2) 返回:6.283185307179586
函数说明:
计算分页后的当前页中所有的单元格(cellExp)的和,注意,本函数只是在分页后才有效
语法:
pcsum({cellExp})
参数说明:
cellExp 表达式
返回值:
当前页中所有的单元格(cellExp)的和
函数示例:
pcsum(A2{条件}) 返回当前页中所有的A2格之和
返回值:
一组数据的集合,数据类型由sql语句的第一个选出字段决定
示例:
例1:query2(&quot;demo&quot;,&quot;select name from employee where sex=?&quot;,&quot;1&quot;)
表示从demo数据库的employee表中选出sex=&quot;1&quot;的记录,返回其name字段值
语法:
pccount({cellExp})
参数说明:
cellExp 表达式
返回值:
当前页中所有的单元格(cellExp)的个数
函数示例:
pccount(A2{条件}) 返回当前页中所有的A2格的个数
函数说明:
取得总的页数,注意,本函数只是在分页后才有效
例2:pos(&quot;abcdefdef&quot;,&quot;def&quot;,5) 返回:6
函数说明:
计算x的n次幂
语法:
pow(xExp, nExp)
参数说明:
xExp 底数
nExp 次幂
返回值:
数值型
示例:
例1:pow(2,4) 返回:16.0
个人中心我的主页好友消息 站内消息 :无新消息提醒互动请求 :2条新系统通知 :5条新 zln米老鼠|装扮|设置| 退出糍糍1025的空间 主页博客相册|个人档案|好友|i贴吧 查看文章
润乾报表函数2 转2011-09-05 16:55 函数说明:
根据第一个表达式的值是否为空,若为空则返回指定值
语法:
nvl( valueExp1, valueExp2 )
参数说明:
valueExp1 需要计算的表达式,其结果不为空时返回其值
valueExp2 需要计算的表达式,当valueExp1结果为空时返回此值
例2:rand()*100 获得[0, 100)之间的一个随机浮点数
例3:integer(rand()*100) 获得[0, 100)之间的一个随机整数
函数说明:
从给定的日期型数据中,算出相差n天后的新的日期数据
语法:
relDate(dateExp, nExp)
参数说明:
booleanExp 表达式
返回值:
当前页的页码。
函数示例:
pno() 返回前页在总的页表中的页码
pno(true) 返回前页在纵向分页的页表中的页码
pno(false) 返回前页在横向分页的页表中的页码
函数说明:
查找母串中子串的位置
函数说明:
执行sql语句,返回结果数据集合,只能返回单列数据,如果sql语句中有多个字段,
则返回第一个字段的结果值
语法:
sql(sqlStatement{,arg1{,arg2{,arg3{,……}}}})
query(sqlStatement{,arg1{,arg2{,arg3{,……}}}})
函数说明:
计算一个值在一个完全划分中的位置
语法:
相关文档
最新文档