ireport函数

数学函数

​    在定义运算公式、审核公式、计算指标、分析区指标宏定义时,在公式定义向导中,常用到一些运算符和其他符号,如+、-、*、/、<、>、!、|、&、@-1等,
  各种运算符的意义如下:

  "+"、"-"、"*"、"/":分别为加、减、乘、除四则运算符,如A+B*C-D/F。

  "("、")":左括号、右括号,在表达式中要成对使用。

  "="、">"、">="、"<"、"<="、"<>":比较运算符,分别为等于、大于、大于等于、小于、小于等于、不等于。

  “&”、“|”、“!”:逻辑运算符,分别表示逻辑运算中的与、或、非,其运算结果返回值为逻辑型。 

  “^”:对字符串操作,用来将其左右的两个字符串连接成一个,如T(1)^"12"。

  “##”:用来标志日期型字符串,如#2005-01-18#。

  “@-1”:表示取上一个报表期的数据,对月报而言是上月,若在旬报中,则系统自动取上旬。如果月报分析表中要取上年同期的数据,用“@-12”表示。如果所引用的报表期不存在,则公式所得的值是空值,此时用户可以手工输入数据。

  计算指标:计算指标是定义的一个表达式,在定义时给表达起一个名字,在要使用这个表达式的地方,可直接引用表达式的名称,引用方法为:%计算指标名称%。

  分析区指标宏:在定义分析区的指标时,也可以给指标表达式起一个名字,在指标中要使用这个表达式的地方,直接引用表达式的名称,引用方法为:$宏名称。

绝对值:ABS(Num)

求绝对值。绝对值是指没有正负符号的数值。
Num:需要求出绝对值的任意实数。
例如:
  ABS(-1.2)=1.2

组合公式:C(int,int)

例如:
  C(6,2)=15

余弦值:COS(num)

计算给定角度的余弦值。 num:以弧度表示的需要求余弦值的角度。

备注: 要把一个角度转换成弧度值,将角度乘于PI()/180。

例如:

COS(1.57) = 0 COS(3.14159) = -1

沿绝对值增大方向取整后最接近的偶数:EVEN(num)

返回沿绝对值增大方向取整后最接近的偶数。不论 num 的正负号如何,函数都向远离零的方向舍入, 如果 num 恰好是偶数,则无需进行任何舍入处理。

例如:

EVEN(1.5) 等于 2

EVEN(3) 等于 4

EVEN(2) 等于 2

EVEN(-1) 等于 -2

e的n次幂:EXP(num)

返回e的n次幂。常数e为自然对数的底数, 等于2.71828182845904。 Num:为任意实数,作为常数e的指数。 备注: EXP函数与LN函数互为反函数。

例如:

EXP(0)等于1 EXP(3)等于20.08553692 EXP(LN(2))等于2

I的阶乘:FACT(int)

I的阶乘,自然数i的阶乘是所有小于或等于i的正整数的积

例如:

FACT(5)=120

求以e为底求对数:LN(num)

求以e为底的自然对数。 num:待计算其自然对数的正实数 num必须保证Ln的结果在实数域内有意义。

例如:

ln(10)=2.3025

ln(2)=0.6931

去尾法求整数:INT(num)

返回数字舍入后的整数值。 Num:需要进行取整处理的实数。

例如:

INT(8.9) 等于 8

INT(-8.9) 等于 -8

下面公式将返回 A1 单元格中的一个正实数的小数部分:

A1-INT(A1)

求数值的对数:LOG(num1,num2)

按指定的任意底数,返回数值的对数。 num1:对数的底数。 num2:需要求对数的正实数。 num1,num2必须保证Log的结果在实数域内有意义。

例如:

Log(10,100) = 2 Log(9,3) = 0.5

取余数:MOD(int1,int2)

返回int1除以int2后的余数。

例如:

MOD(10,3)=1

取舍入后的奇数:ODD(num)

返回对指定数值进行舍入后的奇数。 不论正负号如何,数值都朝着远离 0 的方向舍入。 如果num 恰好是奇数,则不须进行任何舍入处理。

例如:

ODD(1.5) 等于 3

ODD(3) 等于 3

ODD(2) 等于 3

ODD(-1) 等于 -1

ODD(-2) 等于 -3

圆周率:PI()

返回圆周率3.14159

累计乘积:PRODUCT(num1.num2,....)

累计乘积,返回一组数值的连乘积。

例如:

PRODUCT(1.5,3,2,10)=90

求数的乘幂:POWER(num1,num2)

返回指定数字的乘幂。 num1:底数,可以为任意实数。 num2:指数。参数num1按照该指数次幂乘方。 num1,num2必须保证Power的结果在实数域内有意义。

例如:

Power(10,2) = 100

Power(4,0.5) = 2

随机数:RAND(num,n)

返回0 - 1之间均匀分布的随机数。

备注: 要生成一个位于a和b之间的随机数,可以使用以下的 公式: C=RAND()(b-a)+a。

例如:

假如需要生成一个大于等于0,小于60的随机数, 使用公式: RAND()60。

假如需要生成一个大于等于0,小于19的随机数, 使用公式: RAND()19。

假如需要生成一个大于等于0,小于50的随机数, 使用公式: RAND()50。

正弦值:SIN(num)

计算给定角度的正弦值。 Num:待求正弦值的以弧度表示的角度。

备注: 如果参数的单位是度,将其乘以PI()/180即可 转换成弧度。

例如:

sin(1.57079) = 1

sin(3.14159) = 0

返回正负符号:SIGN(num)

符号函数,返回参数num的符号。

例如:

num>0 ,Sign(Num) = 1

num=0,Sign(Num) = 0

num<0,Sign(Num) = -1

平方根:SQRT(num)

求num的平方根。 num为大于0的实数。

例如:

SQRT(4) = 2

SQRT(1.44) = 1.2

正切值:TAN(num)

返回指定角度的正切值。 num:待求正切值的角度,以弧度表示。 如果参数是以度为单位的,乘以Pi()/180后转换为弧度。 num必须保证TAN的结果在实数域内有意义。

例如:

Tan(0.785) = 1

Tan(3.14159) = 0

TRUNC(num,n)

将数字的小数部分截去,返回指定小数位数的数字。 num:待做截取处理的数值 n: 指明需保留小数点后面的位数 第二个参数可以为负数,表示为小数点左边指定位数 后面的部分截去,即均以0记 例如: TRUNC(8.19,0) 等于 8 TRUNC(-8.19,0) 等于 -8 TRUNC(PI(),1) 等于 3.1 TRUNC(1238.19,-2)等于1200

时间日期函数

DATE(yy、mm、dd)

返回由指定年、月、日合成的日期常量。 其中:参数yy、mm、dd为整数。

例如:

Date(1999,12,25)=#1999-12-25#

DATETOSTR(date)

将一日期转变成字符串。

例如:

DATETOSTR(#1999-12-25#)="1999-12-25"

DAY(date)

返回日期中的日,返回值为整数。

例如:

Day(#1999-12-1#)=1

DAYS(date,date)

返回两个日期之间的天数。天数中包括两头的日期。

例如:

DAYS(#1999-12-1#,#1999-12-10#)=10

DXDATE(date)

将日期变成大写格式。

例如:

DXDATE(#1999-1-1#)="一九九九年一月一日"

JDY(str)

计算月份str所属的季度,返回的结果是字符串;

例如:

JDY("10")="4",即表明10月份属于第4季度。

Jidu(date)

返回日期中的季度,返回值为整数。

例如:

Jidu(#1999-12-1#)=4

JSY(date)

判断月份str是否是一个季度的第一月,如果是 返回TRUE,否则返回FALSE,JSY是季首月的简称;

例如:

JSY(“07”)=TRUE jsy(t(2))即可判断当前报表期是否是一个季度的 第一月。

MONTH(date)

返回日期中的月份,返回值为整数。

例如:

Month(#1999-12-1#)=12

NOW()

返回系统当前时间,返回值为字符串:HH:MM:SS。

例如:

NOW()="12:56:50"

STRTODATE(str)

将一字符串转变成一日期。

例如:

STRTODATE("1999-12-25")=#1999-12-25#

如果串格式非法,则返回ErrVal。

TODAY()

以日期常量的形式返回当天的日期。

例如:

TODAY()=#1999-12-25#

WEEKDAY(date)

返回指定日期为一周中的第几天。返回类型为整型。

例如:  

Weekday(#2005-01-03#)=1  2005年01月03日为星期一,为本周的第1天,所以 返回值为1。

如果日期为星期天,则返回值为7。 (星期日为本周的第1天)

WOFM(date)

返回日期Date所在的周是所在月的第几周,第一周从本月 的第一个周一算起

例如:

今天是2005年6月21日,则 WOFM(today())返回的 值为3,表示是第3周;因为2005年6月的1--4日所在周的 周一在上月的最后一周,所以是第3周。

YEAR(date)

返回日期中的年份,返回值为整数。

例如:

Year(#1999-12-1#)=1999

字符串函数

CHAR(int)

根据ASCII码返回单个字符的串。

例如:

CHAR(65)="A"

CLEAN(str)

将串中的不可见字符去掉。(这里的"不可见字符"是指 "ASCII码小于32的字符")

CODE(str)

返回串中第一个字符的ASCII码。

例如:

CODE("abc")=97

FIND(substr,str)

在串str中查找子串substr,并返回子串第一次出现的位置。(0代表第一个字符)如果没找到,则返回-1。与Search不同,FIND区分大小写。

例如:

FIND("AB","AAABBBBB")=2

FIND("Ab","AAABBBBB")=-1

FORMAT(str,num)

将一数字num变成格式化字符串。该函数类似于C语言 中的printf函数。

例如:

Format("%d",1234)="1234" 将十进制整数"1234"格式化为字符串 Format("%.8d",1234)="00001234" 将十进制整数"1234"格式化为长度为8个字符的字符串, 如果num长度小于给出的精度数时,在前边填补0;如果 大于精度数,按实际长度显示 Format("%f",12.34)="12.34" 将浮点数num转换为字符串 Format("%.1f",12.3412)="12.3" 将浮点数num转换为字符串,并指定小数点后位数 Format("%x",31)="1E" 将num格式化为16进制,num必须是一整数 Format("%o",12)="14" 将num格式化为8进制,num必须是一整数 Format("%e",1234.56)="1.23456000000000E003" 用科学计数法表示,num必须是一浮点数 Format("%u",2005)=“二零零五” 将整数格式化为大写

In(substr,str)

判断SubStr是否是Str的子串 SubStr表示子串;str表示多个字符串,串中的各 子串只能用空格分隔

例如:

In("00","00 01 02") 函数返回值为T。

LEFT(str,int)

返回一字符串左边int个字符组成的子串,其中int为整数。

例如:

LEFT("ABCDEF",3)="ABC"

LEN(str)

返回串的长度,返回值为整数。

例如:

LEN("ABCDE")=5

LOWER(str)

将串变成小写。

例如:

LOWER("AbCd1")="abcd1"

MID(str,I,n)

返回串中从I开始的n个字符的子串。其中:I,n都为整数。 串的基数n从0开始。

例如:

MID("ABCDEF",2,3)="CDE"

MT(str1,str2)

判断Str1与Str2是否模式匹配,返回值为逻辑型T、F。

例如:

MT ("ABC","A")返回T; MT ("ABC","A?C")返回T; MT ("ABC","AB")返回F; 其中*、?为通配符。

REPLACE(str,substr,from,num)

将串str从From开始的num个字符换成新串substr。串的基数从0开始;且from和num均必须为整数。

例如:

REPLACE("ABCDEF","12345",2,3)="AB12345F"

REPT(str,int)

将一串重复若干次,变成一新串。int为整数。

例如:

REPT("A",5)="AAAAA"

RIGHT(str,int)

返回一字符串右边n个字符组成的子串。int为整数。

例如:

RIGHT("ABCDEF",3)="DEF"

RMBDX(num)

将数值转变成大写人民币串。

例如:

RMBDX(1203.45)="壹仟贰佰零叁元肆角伍分整"

SAME(str1,str2)

判断两个字符串str1和str2串是否相等,不区分大小写。 返回值为逻辑型T、F,等于返回T,否则返回F。

例如:

SAME("aBc","ABC")=T

SEARCH(substr,str)

在串str中查找子串substr,并返回子串第一次出现的位置。(0代表第一个字符)如果没找到,则返回-1。与Find不同,SEARCH不区分大小写。

例如:

SEARCH("AB","AAABBBBB")=2

SEARCH("Ab","AAABBBBB")=2

STR(int)

将数值变成串;

例如:

STR(1)="1";

STRCAT(str1,str2,...)

将所有串合并。该合并不受255长度限制。

例如:

STRCAT("AB"," CD"," EF")="AB CD EF"

SUBSTITUTE(str,oldsub,newsub)

将串中的oldsub子串换成另一newsub子串。不管子串出现多少次,全部换掉。

例如:

Substitute("AbCdEFCdEG","CdE","123")="Ab123F123G"

TRIM(str)

将串中的头尾空格及TAB键去掉。

例如:

TRIM(" AB C ")="AB C"

大写:UPPER(str)

将串变成大写。

例如:

UPPER("AbCd1")="ABCD1"

VALUE(str)

将字符串转换成数值。如果转换不成功,则返回ErrVal。

例如:

VALUE("12.34")=12.34

统计函数

平均值:AVE(num1,num2,...)

对一组数据求平均值。至少必须有一个参数。

例如:

AVE(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))

记数:COUNTIF(Bbname,cond)

对变长表中所有满足某一条件的记录记数;应用此函数的前提是先定义代码表元。 其中:BbName表示变长表表名,cond表示条件。

例如:

COUNTIF("b1",a2="2210101"),其中a2为代码表元, 此函数返回b1中a2值为2210101的记录条数。

最大值:MAX(num1,num2,...)

在一组数据中求出最大值。至少必须有一个参数。

例如:

Max(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))

最小值:MIN(num1,num2,...)

在一组数据中求出最小值。至少必须有一个参数。

例如:

Min(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))

RANK(num,"Cells",Ord)

求出num在Cells表元数组中的序号。  

当Ord为0时,将数组按降序排列;  

当Ord为非0时,则将数组按升序排列。

由于PowerReport不支持[Cells]的形式,所以如果在Excel中的公式为:Rank(A2,[A3:A10,B2:B9],1) 在PowerReport中则应写为: Rank(A2,"A3:A10,B2:B9",1)

STDEV(num1,num2,...)

对一组数据求标准方差。至少必须有2个参数。

例如:

STDEV(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))

SUM(num1,num2,...)

对一组数据求和; 至少必须有一参数。

例如:

sum(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))

SUMIF(Bbname,exp,cond)

对变长表中满足某一条件的表元求和。

其中:BbName为变长表表名; exp是变长表中的表元,可以是表达式; cond表示条件; 应用此函数的前提是先定义代码表元,一般在基本表和分析表中引用。

例如:

sumif("b1",c2+d2,a2=”2180100”),a2为代码表元, 此公式是对b1中所有满足a2=“2180100”的c2+d2求和。

VAR(num1,num2)

对一组数据求方差。至少必须有2个参数。

例如:

VAR(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))

数据转换函数

AsBool(任意类)

将某个任意类型值转换成逻辑型

AsDate(任意类)

将某个任意类型值转换成日期型

AsInt(任意类)

将某个任意类型值转换成整型

AsNum(任意类)

将任意类型值转换为数值型。

AsStr(任意类)

将某个任意类型值转换成字符型

逻辑函数

AND(bool1,bool2,...)

求多个逻辑表达式相与的结果。

例如:

 AND(a1:a5,b1,b3,TRUE,C1 & C5) 返回值为逻辑型True,False。

判断为空:BLANK(val)

判断一表达式是否为空(NULL)。一般常用在判断一表元是否填写。

例如:

BLANK(A3) 返回值为逻辑型True,False。

条件赋值:IF(bool,val1,val2)

条件赋值函数。 如对逻辑表达式bool求值结果为TRUE,则返回val1,否则返回val2。

例如:

if(T(2)="01",C3,C3+@-1D3) 在月报任务中,该表达式判断当前报表期的月份是否是1月,如果是,则取C3表元的值,否则取C3与上期D3的和。

该函数返回值由实际返回内容决定。

OR(bool1,bool2,...)

求多个逻辑表达式相或的结果。

例如:

OR(a1:a5,b1,b3,TRUE,C1 & C5) 返回值为逻辑型True,False。

其它函数

CodeStr(DroupNmae,Code)

该函数根据指定的代码组名和代码值返回代码对应的文字串。 GroupName为代码组名,参数类型为字符串。 Code也是字符串,表示代码。

例如:

CodeStr("科目代码",A2) 若表元A2的值为 "010201",而代码"010201"在代码组“科目代码”中对应的字符串为"差旅费",该函数返回: "差旅费"

CodeStrN(DroupNmae,Code,Ord)

        该函数根据指定的代码组名、代码值和需要取出的代码文字的序号返回对应的文字串。 GroupName为代码组名,参数类型为字符串。 Code也是字符串,代表代码。 Ord:文字串在一个代码行中的序号,0表示第一个,1表示第二个等等。

        在一般情况下,一个代码组中总是一个代码对应一个文字串;但是有些代码组中,一个代码可以对应一个主文字串和最多九个辅助文字串,便于用户在特殊情况下使用。

例如:

请看下面的产品代码:

代码 主文字串辅助文字串1辅助文字串2
01011一类卷烟2
 01012 二类卷烟2
01020雪茄烟2
01030烟丝2
01040烟叶1
02031一类啤酒2

则:

        CodeStrN("产品代码","01011",0) 该函数返回: "一类卷烟"  

        CodeStrN("产品代码","01011",1) 该函数返回: "箱"

如果第三个参数Ord是负数,则返回如下值:

-1:返回对应代码的级次,级次从0开始

-2:返回代码的父代码,如果没有父代码则返回空

-3:如果代码是叶子节点则返回TRUE,否则返回FALSE

-4:如果代码是跟节点则返回TRUE,否则返回FALSE

例如:

  CodeStrN("产品代码","01011",-2)

DATASET()

返回当前所在数据集的名称

例如:

当前为主数据集,则返回MAIN;

当前为舍位平衡数据集,则返回MAIN_PH;

当前为选择汇总数据集,则返回MAIN_SS;

当前为测试数据集,则返回“测试数据集”

GENIDC(Str,Tag)

根据Str中的前8个字符,产生IDC码,即自动生成校验码。 当Tag为1时,8位码与校验码之间带横线'-', 如43434345-5;否则不带。

GetHJH(CellNmaeStr)

该函数返回某个变长表表元的合计值。 参数CellNameStr为变长表表元名组成的串。 请注意,由于变长表表元不能参加一般报表的公式运算, 所以这里必须用表元名串。另外,表元名必须为变长表 数据行表元,而不是合计行。

例如:

GetHJH("B0->B3") 该函数返回B0表中的B3表元的合计值。

该函数也支持取前期值,如GetHJH("@-1B0->A2")表示 取上一期B0表中A2表元的合计值。

His(C,N)

取上几期的指标,C表示取数指标,为字符型;N表示 上几期,为整型;此函数功能主要是对任意表元跨报表期取数;

例如:

 C5=His("K03->C6",3) 表明C5指标的值为K03表中C6指标上3期的数值,若当前 报表期是2003年4月,则C5指标的值等于2003年1月K03表 中C6指标值。

注:此函数主要为兼容早期任务而存在;现在推荐使用 TC( )函数。上述例子中的公式可用TC( )表示为: C5=TC(":K03:C6","@-3","")

His1(N,C)

取指定报表期的指标值。 N表示取数指标,C为字符串表达式,表示报表值;

例如:

 C5=His1("C6","200302") 即表明C5指标值为2003年2月C6指标的值。

注:此函数主要为兼容早期任务而存在;现在推荐使用 TC()函数。

上述例子中的公式可用TC()表示为:  C5=TC(":B1:C6","200302","")

Id()

返回当前报表户的代码。

例如:

ID() ID()也可写成UserID()

IDC(Str)

判断字符串Str是否为国家标准单位代码。 若是,则返回TRUE,否则返回FALSE。

IsFilled(Str)

该函数判断当前报表户对应的某个报表是否已被填过。 参数Str为报表代号。

例如:

 IsFilled("gdzc") 该函数判定固定资产表是否已填。

IsHZ()

判断当前报表是否为汇总报表。

例如:

 IsHZ() 若是则返回TRUE;否则返回FALSE。

LNAME()

返回注册节点的单位名称

例如:

任务中注册的单位名称为“亿信华辰”,则返回的 值为“亿信华辰”。

Logininf(num)

Logininf(0):返回登陆id   

        如果使用的是运行系统或者报表精灵,并且任务没有 设置需要密码保护,则返回空,否则返回对应的登陆者;

  如果是使用的插件并且登陆者是报表单位,则返回 报表单位的单位代码。

  如果是服务器用户的身份登陆的,则返回服务器用户 的帐号。

Logininf(1):返回登陆者的名称

  如果使用的是运行系统或者报表精灵,并且任务没有 设置需要密码保护,则返回空,否则返回对应的登陆者;

        如果是使用的插件并且登陆者是报表单位,则返回 报表单位的单位名称; 如果是服务器用户的身份登陆的,则返回服务器 用户的名称。

Logininf(2):

        如果是运行系统或者报表精灵则返回登陆者的角色: “Admin”,“Operator”,“Readonly”,分别表示管 理员,数据操作员和数据查看员;

  如果任务没有设置需要密码保护则总是返回“Admin”。

  如果是插件并且登陆者是报表单位则返回admin。 如果是服务器用户,返回“user”。 如果是报表户,返回"bbh"。

  如果是以服务器用户登陆的,并且有写权限的返回 Operator,否则返回Readonly

Logininf(3):

  返回登陆者的登陆工具:runsys、plugin、sparrow, 分别表示使用的是运行系统、插件、报表精灵。

Logininf(4):

  如果使用的运行系统或者报表精灵,则总是返回空。

  如果是插件并且登陆者是服务器用户,则返回登陆者 的名称。

Logininf(5):

  如果使用的运行系统或者报表精灵,则总是返回空。

  如果是插件并且登陆者是服务器用户,则返回登陆者 的所属部门。

L_ID(Tag)

返回本机注册当前任务所用的代码。

例如:

L_ID(1)返回注册用的UserID;

L_ID(0)表示注册用的UpID。

NAME()

与Id类似,该函数返回当前报表对应的报表户名称。

例如:

当前表页为的填报单位为“亿信华辰”,则该函数返回"亿信华辰"。

如: Name() Name()也可写成UserName()

OffsetCodestr("CodeGroup","Code",FieldNo,Offset)

取代码组中某一代码的前或后offset个代码对应的文字串的FieldNo段的值,返回值为字符串。

其中:

        CodeGroup:表示代码组名    

        Code:表示代码组中的代码    

        FieldNo:表示代码组中文字串的顺序    

        Offset:表示代码在代码组中的顺序

FieldNo取值:

        -1 返回代码

        -2 返回代码组第一个代码

        -3 返回代码组最后一个代码

        0 返回主文字串

        大于0 返回辅文字串,如1返回辅文字串1

Offset取值:   

        取正值表示向当前代码的后几行滚动(取值1表示定位 到代码组中该代码下面一行代码)   

        取负值表示向当前代码的前几行滚动(取值-1表示定位 到代码组中该代码前面一行代码)   

        取零表示定位到Code代码所在行

例如:

代码组“产品代码”中的代码为:

代码主文字串辅文字串1辅文字串2辅文字串3辅文字串4
01011一类卷烟245150
01012二类卷烟230100
01020雪茄烟240
01030烟丝230
01040烟叶1

则:

Offset取零,定位到代码所在行:  

    OffsetCodestr("产品代码","01030",0,0)="烟丝" FieldNo取0,返回主文字串

 OffsetCodestr("产品代码","01030",-1,0)="01030" FieldNo取-1,返回代码

 OffsetCodestr("产品代码","01030",-2,0)="01011" FieldNo取-2,返回代码组第一个代码

 OffsetCodestr("产品代码","01030",-3,0)="01040" FieldNo取-3,返回代码组最后一个代码

 OffsetCodestr("产品代码","01030",1,0)="吨" FieldNo取1,返回代码01030的辅文字串1--吨。

 OffsetCodestr("产品代码","01030",3,0)="30" FieldNo取3,返回代码01030的辅文字串3--"30"。

Offset取其他,定位到代码前或后几行:  OffsetCodestr("产品代码","01030",-1,1)="01040" Offset取1,定位到代码01030的后一行,FieldNo取-1, 返回代码。

 OffsetCodestr("产品代码","01030",-1,-1)="01020" Offset取-1,定位到代码01030的前一行,FieldNo取-1, 返回代码。

 OffsetCodestr("产品代码","01030",0,-3)="一类卷烟" Offset取-3,定位到代码01030的前三行,FieldNo取0, 返回主文字串。

 OffsetCodestr("产品代码","01030",3,-3)="45" Offset取-3,定位到代码01030的前三行,FieldNo取3, 返回辅文字串3。

 OffsetCodestr("产品代码","01030",-3,-1)="01040"  OffsetCodestr("产品代码","01030",-3,1)="01040" 以上2个公式中,FieldNo取-3,无论Offset取何值,总返 回代码组中的最后一个代码。

  OffsetCodestr("产品代码","01030",-2,-1)="01011"   OffsetCodestr("产品代码","01030",-2,1)="01011" 以上2个公式中,FieldNo取-2,无论Offset取何值,总返回 代码组中的第一个代码。

PC(cellname,step)

变长表中取历史指标函数。 其中cellname为表元名,用字符串表示;Step表示步长, 如-1表示上一期。应用此函数的前提是取数表与被取表 之间必须有一致的关键字定义!

例如:

PC("c2",-3)返回c2表元上3期的值。

QS(DATENAME,BBQ,BBH,ZBNAME,OPTIOIN)

QS函数返回一个字符串型,它只接收五个字符串型的参数: 第一个参数表示要取哪个取数设置的数据,此参数必须指定。 第二个参数是取哪个期的数据,此函数可以为空表示取 当前期,为@-1表示前一期,为200212--表示取2002年12 月的数据。 第三个参数是取那户的数据,为空表示取当前户的数据, 为001表示是取报表户代码为001的单位的数据 第四个参数是表示取哪个指标。 第五个参数是自定义选项以备扩充,此参数的形式是 key1=value1;key2=value2的形式可以任意扩充。 这些参数会依次再服务器上传个第三方开发商实现的类,

例如:

QS("KM","20050504","0001","A5","") 此函数主要用在插件上在线填报时从数据源中取数。

SELF()

返回公式所在表元的值。

例如:

表元A2的公式为if(blank(self()),today(),self()), 则self()返回A2的值。

该表达式判断某表元是否为空,如为空,则将当前日期 赋给A2表元注意,这里不能用if(blank(a2),today(),a2), 这样就会有循环调用。

strcount(STR:substr)

统计字符串中串的个数。  

其中:   

str:为多个字符串组成的字符串组,

例如, "adb,bc,asd,af",adb,bc,asd,af分别为一个字符串。   

substr:为上述的字符串组中多个字符串间的分隔符。 特别地,  如果str为空,则函数的返回值总为0;   如果substr为空,则函数的返回值总为1; 如果分隔符在串中不存在,也总返回1。

例如:

strcount("23,44,54,44",",")=4   

strcount("",",")=0

strcount("23,44,54,44","")=1

strcount("23,44,54,44","、")=1

该函数可以用于统计多选的代码组中代码的个数。

SVal()

浮动分析表中取浮动值的函数,即浮动设置中浮动表元的占位符号! 浮动分析表中定义分析区时设置浮动行的条件时要用到此函数。 浮动分析表刷新后,此函数就被浮动设置中的浮动依据代替。

T(num)

该函数返回当前报表期的某一段,即T(1)返回报表期的 第一段,T(2)返回第二段,T(3)返回第三段。

根据报表期类型的不同,T(1),T(2),T(3)返回的内容是不同的。 对于日报,T(1)、T(2)、T(3)返回的分别是年、月、日; 对于月报,T(1)、T(2)返回的分别是年、月, T(3)无返 回值; 对于季度报表,T(1)返回的仍然是年,T(2)则返回季度值, T(3)无返回值。 对于旬报和五日报,T(1)、T(2)返回的分别是年、月, 旬报中T(3)返回上、中或下,五日报中T(3)则返回1日-5日, ……20日-25日 或 26日-月末。

函数返回类型为字符串。 如果num小于零,则返回的是当前报表期的前期。 参数num必须为整数。 举例: 对于月报,如果当前表期为2002-11,则: T(1)="2002" T(2)="11" T(-1)="200210" T(-2)="200209" 对于季报,如果当前报表期为2006年第01季度,则: T(1)=”2006” T(2)=”01” 月报、季报中不能返回T(3)。同理,年报中不能返回T(2)、 T(3)。

T(num)也可写成BBQ(num)

跨任务取数:Task_Cell(任务别名,RpfName,BBQ ,UserID,FieldName)

跨任务取数公式的另一种写法,

“任务别名”通过定义关联任务来设置。注意:“任务别名” 要区分大小写!

RpfName表示报表名称,

BBQ、UserID分别表示报表期和报表户代码,FieldName 表示表元名。

其中:“任务别名”为空表示取本任务相应表元值, BBQ和UserID都可以为空,默认为当前报表所在的值; UserID前带则代表汇总表,如"23456789",也可以 就是"*"。

取外任务表元值时,若成功,则返回对应的值;否则返 回NULL。

与TC只能取数值型表元不同的是,Task_Cell可取任意 类型表元的值,返回的结果为字符型。

例如:

Task_Cell("YB","XXB","200312","23456789","B5"), 表示取YB任务中XXB的B5表元2003年12月报表户代码为 23456789的值。 同TC一样,Task_Cell也可以从变长表取数,也必须有 关键字表元和代码表元。 如:Task_Cell("YB","00001@A1","","","B5")

注:此函数主要为兼容早期任务而存在;现在推荐使用 TC( )函数。上述例子中的公式可用TC( )表示为:  TC("YB:XXB:B5","200312","23456789")  TC("YB:00001@A1:B5","","")

跨任务取数:TC(OutCell,BBQ,ID)

跨任务取数函数。  OutCell:由任务别名、报表名、表元名3部分合成。  BBQ:对应外部任务中的报表期;或写作"@-1",表示取上期的数据。  ID:外部任务中的报表代码。   其中BBQ和ID都可以为空,默认为当前报表所在的值;  ID前带则代表汇总表。如"23456789",也可以就是"*"。  取外任务表元值时,若成功,则返回对应的值;否则返回NULL。

 一个参数完整的公式例子:   TC("YB:B1:C5","200501","420000")  其中:    YB:为任务别名,即关联任务的代号,可在运行系统或设计系统的“关联任务”菜单中定义。    B1:为关联任务中的报表名称,即要从此表中取数。    C5:为关联任务中的表元,即要从此表元中取数。

TC函数的常见用法:

(1)、取本任务中指定报表期的某个指标。  

        取本任务的数据时:  

        第一个参数(OutCell)应写作:":B1:C5",注意第一个冒号“:”不能省略。  

        此时第二个参数(BBQ)不能为空,可写作"200411",若要取当前期的上期的值则可写作:"@-1"  

        第三个参数和取其他任务时一样,可以为空  

如:取本任务上期B1表的C5表元的当前单位的数据

可写作:    TC(":B1:C5","@-1","")

(2)、TC函数中的字段名可以是一表达式,单表达式中的表元必须来自同一张报表。   TC("NB:B1:C5+D5","2004",""),其中C5+D5就是一表达式。

(3)、TC函数可写成“TC(OutCell)”的形式,如TC("YB:B1:C5"),即只有第一个参数,表示取的是本报表期当前单位的数据。

(4)、TC支持从变长表跨任务取数,变长表必须有关键字或者代码表元。  TC(":1001@B2:C3","",""),返回变长表b2中关键字为1001那行的C3的值,常用在基本表或分析表从变长表中取数。  TC(":"^A3^"@B0:C3","",""),表示取对应的变长表多行的值,常用在一个变长表从另外一个变长表取数,其中"^^"里面还可以是更为复杂的表达式,

如:TC("scyb:"^CodeStrN("产品产量",A2,1)^"@CPCL:H3",t(1)^t(2),“”)。

 请注意,TC(":1001@B2:C3","","")只能取到指定代码表元值为"1001"的那一行值。而TC(":"^A3^"@B0:C3","","")可以取到与关联任务B0表中关键字A3相同多行的值。

  TC也支持取变长表的合计行的值,如:  

TC(":HJH@B1:B2","",""):返回的是b1表的b2表元的合计行的值,即@符号前面如果是hjh则返回的是合计行的值,插件和报表精灵也支持,hjh大小写不敏感

UpId()

与UserId类似,该函数返回当前报表的上级代码。

例如:

假如当前表页为武汉市,则该函数返回湖北省的代码。

IDCHECK(checkName ,str )

根据传入的规则名 checkName 获得校验码字符串str 的校验码 参数 checkName

算法名称:目前支持"IDC" "PDY" "PID",不区分大小写

参数 str

代码原值

返回值:校验位,不合法的返回空格#20

例如 :

IdCheck("IDC","1234567")

IdCheck("PDY","1234567")

IdCheck("PID","4205001979122651")

WildMatch(Str1,Str2)

判断Str1与Str2是否模式匹配。

例如:

WildMatch("ABC","A")返回True; WildMatch("ABC","A?C")返回True; WildMatch("ABC","AB")返回False; 其中*、?为通配符。

UserId()

返回当前报表户的代码。

例如:

UserId() 与Id()功能相同。

UserName()

返回当前报表户的名称。

例如:

UserName() 与Name()功能相同。

CheckTag()

检查当前报表户数据的Option字段的首字符是否为“1”。 返回True表示该条数据Option字段以“1”开头, 返回False表示该条数据Option字段不是以“1”开头。

例如:  

CheckTag() 注:无法定位到这户也返回False。

UpIdExist()

判断在信息表中当前报表户的上级是否存在。

例如:  

UpIdExist() 返回True表示存在,返回False表示不存在。 注:如果当前报表户为注册节点,总返回True。

BBQ(offset)

返回与当前报表期相关的串。

offset=1表示取当前报表期的“年”

offset=2表示取当前报表期的“月”

offset=3表示取当前报表期的“日” offset为其他值的时侯,表示取与当前报表期相距offset个单位的报表期串。

例如:  

当前报表期为“2009年2月”,则BBQ(2)=2;

注:

(1)offset为其他时,表示取前offset期或后offset期的报表期串。 (

2)与T函数功能相同。

NUMUPPER(F)

返回F指定的浮点数的汉字串。

举例:

NUMUPPER(3602.105)=“三千六百零二点一零五”

SCRIPTEXP(funcName, param1, param2,...)

返回执行脚本中的自定义公式后的结果。 参数funcName是函数名称。param1,param2,...代表的是funcName这个函数所需要的参数。 注:要执行脚本中的自定义公式,必须先到脚本管理器中,右键“任务事件”,添加“OnCustomExp”,在其中自定义要调用的函数。具体加入规则见该文件内函数编写说明。

例如:

假设onCustomExp的脚本中定义了"GetXun"函数,对一个时间型的表元"C2",其值为2009年12月17日,则执行 SCRIPTEXP("GetXun", C2)="中旬"

假设onCustomExp的脚本中定义了如下"GetAddOne"函数: procedure GetAddOne(p1: string; var value: string);

var

i: integer;

begin

i:=strtoint(p1);

value:=inttostr(i+1);

end;

对一个整型表元B2=11,执行 SCRIPTEXP("GetAddOne", B2)="12"

TXT(Exp, bbqStr)

返回值是备注型,返回根据对bbqStr指定的报表期计算Exp(可以是表元名也可以是合法的表达式)的值。

其中参数Exp为表元名或者合法的表达式。Exp为表元名时,表示获取相应报表期内的表元值的字符串形式。

例如:

TXT("C5", t(1)^"02") 表示获取当前报表器所在年份的第二个月中的C5表元值。

THISRPT()

返回运行系统当前展示的报表的简称。

例如:

运行系统正在显示的是信息表(假设期简称为XXB),则 THISRPT()=“XXB”

FINDCODE(cgName, condition)

返回cgName指定的代码组中满足特定条件condition的代码名称。

返回值和两个参数都是字符串类型。

ISUPID(id)

判断一个报表户是否是当前报表户的上级

举例:

假设1000是100101的上级,而当前报表是100101,

则 IsUpId("1000")=T 即返回TRUE

PMI(name)

返回当前报表的名为name的整型报表参数值。

name为字符串类型。

PMN(name)

返回当前报表的名为name的浮点数类型的报表参数的值。

name为字符串类型。

PMC(name)

返回当前报表的名为name的字符串类型的报表参数的值。

name为字符串类型。

PMD(name)

返回当前报表的名为name的日期类型的报表参数的值。

PML(name)

返回当前报表的名为name的布尔类型的报表参数的值。

ISPLANARXJ()

判断鼠标当前选中数据行是否是变长表小计行。 如果是返回“T”(True), 反之返回“F”(False)。

SUMCHILD(rpt, calcExp, condition)

汇总下级某些符合条件的表元。 返回值为汇总后的和值。

参数说明:

rpt:报表简称

calcExp:表元值计算表达式

condition:汇总条件

CODEISPARENT(cgName, code1, code2, recursive)

判断在cgName指定的代码组中,code1是否是code2的父节点。 cgName是代码组的名称。code1和code2都是代码值。

recursive是布尔类型的,为True时递归查找code2的父节点,表示判断code1是否是code2的上级节点。

recursive为False时,判断的是code2是否是code1的直接下级。

CODEISCHILD(cgName, code1, code2, recursive)

判断在cgName指定的代码组中,code1是否是code2的子节点。 cgName是代码组的名称。code1和code2都是代码值。

recursive是布尔类型的,为True时递归查找code2的子节点,表示判断code1是否是code2的下级节点。

recursive为False时,判断的是code1是否是code2的直接下级。

PDY(id)

计算指定id的PDY码(组织机构代码)。 返回值为PDY码。参数为字符串类型。

例如:

PDY("51000010")=7;

IDCARD(id)

计算指定id的身份证号码。 返回值为身份证号码,参数为字符串类型。

例如:

IDCARD("42112219820214633")=421122198202146331

CUSTOMPV(Type, Name, propName)

返回任务、报表或表元的一个扩展属性的值。

其中,Type为业务对象的单位,可以从“task”“report”“cell”中取值,表示是任务、报表还是表元。

Name为该业务对象的名字。propName为属性名。

UINF(QueryStr)

获取指定用户的某个属性值。

参数QueryStr为要查询的属性,

(1)获取服务器上用户登录信息 如要获取当前登录者的某个扩展属性 使用函数uinf(“user_mh”) 下划线前部分表示用户属性类别,后部分为属性名也就是字段名

Uinf(“user属性名”) 表示获取用户的属性 Uinf(“dp属性名”) 表示获取用户所在部门的属性

例如:

如果服务器上部门列表中有个属性名为 ask, 那么要获得当前等度者的这个信息

函数使用如下:Uinf("dp_ask")

VFIELD(name)

根据字段名返回该字段对应的值。

例如:

VFIELD("B2")=3.2 表示B2表元的值为3.2。

VFIELD("C3.B5")=6 表示C3报的B5表元的值为6。

注:可以跨表取表元值,报表名和表元名之间要加一个点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值