首页 > 代码库 > 水晶报表函数

水晶报表函数

函数使用1.取上一条记录previous({tablename.fieldname});2.取字符串中某个字符第N次出现前面字符 split(string,"text")[1]  例:split("报销餐费","餐费")[1] ="报销"Basic公式的语法1、数据类型(1)、字符串型:String字符串处理有很多函数,如:Left(),Right(),Mid(),Trim()(2)、数字型:Number(3)、货币型:CurrencyCrystal Reports中提供CCur()函数,可以将数值型数据转换为货币型数据,比如:CCur(500)。(4)、布尔型:Boolean比如True或False,一般Yes可取代True,No可取代False。(5)、日期及时间型:Date,Time及DataTimeDate类型用于存放日期,Time类型用于存放时间,DataTime类型则可同时存放日期和时间       时间可以使用#...#来标识如:#2001/10/1#2、变量及初始值变量在使用前必须使用Dim关键字声明,格式为:Dim变量名 AS 数据类型 变量命名比较灵活,但不能和BASIC语法中的关键字同名,关键字是以蓝色显示的。变量类型可以分为以下几种:(1)、简单类型(2)、范围类型(3)、用来存放简单类型和范围类型的数组3、水晶报表的BASIC语法公式中只支持一维数组,且数组的下标从1开始,这和很多的编程语言的语法规则不一样。按照如下方式定义一个数组:Dim 数组名(数组长度)AS数据类型例子:Dim Week(6) AS String        Week=Array("Mon","Tue","Wed","Thu","Fri","Sat","Sun")4、数组除了可以存放简单数据类型数据外,还可以存放范围数据5、运算符(1)、布尔运算符  Not:产生相反的效果   And:逻辑与    Or:逻辑或    Xor:异或  Eqv:(a Eqv b,a和b两者值相同的时候,运算结果为真)  Imp:(a Imp b,除a为真,b为假外,其他运算结果都为真)(2)、比较运算符=<>:<:<=:>:>=:(3)、NULL值(4)、算术运算符+:-:*:/:\:Mod:-:^:6、控制公式执行流程的语句(1)、If-Then-Else语句If 布尔表达式 Then...或则End Ifif 布尔表达式 then...elseif 布尔表达式 then...elseif 布尔表达式 then...else...endif(2)、Select Case语句Select Case 变量Case 条件1程序Case 条件2程序Case Else程序End Select(3)、For/Next语句For I=1 To n....Next I(4)、Exit For(只用于For循环语句中)有时,可能在循环语句未执行完毕的时候, 就想先结束该循环语句的执行。(5)、Whilewhile 语句用来条件反复执行一段语句,该语句基本结构如下:while 布尔表达式......end其执行步骤是先判断布尔表达式是否成立,如果成立,就执行省略号中的程序段,否则就跳出该while循环。(6)、Do 7、全局变量上面讲述的Dim语句声明的变量都是属于局部变量,而全局变量的语法格式如下:Global 全局变量名 AS 变量类型 例子:Global Sdepart AS String请记住,凡是定义为Global的全局变量,只要这些变量的名称相同,则其所占用的内存也相同。8、共享变量除了全局变量外,还有可以在主报表和子报表之间共享的变量,前面介绍的全局变量在主报表中使用同一块内存,而共享变量的内存是有主报表和子报表共用,所以共享变量的定义域比全局变量更大,也就是说,共享变量不仅可以跨域公式,还可以跨域主/子报表。定义共享变量的语法格式如下:Shared 共享变量名 As 变量类型同样在主报表中定义了共享变量后,在子报表中药引用该共享变量的时候,也需要再声明一次。主子报表的共享变量其实也是占用同一块内存。另外请记住,当修改子报表后,如果看到报表的结果并没有更新,这时请在报表设计区中右键单击子报表控件,并在弹出的对话框中选择“重新导入子报表”,这样就能看到更新的结果了。9、报表中公式的执行顺序指定公式执行的顺序,可以使用函数EvaluateAfter()例子:EvaluateAfter(@gongshi2)‘gongshi1的公式代码......10、Cystal Reports内建函数水晶报表中的十几种内建函数(1)、字符串Len()函数:用来计算字符串的长度;Trim():去掉字符串中的所有空格;LTrim():去掉字符串开头的空格;RTrim()函数:删除字符串尾部的空格;Ucase(“jack”)函数:将字符串转换成大写Lcase(“JACK”)函数:将字符串转换成小写Mid()、Left()、Right()StrCmp(“apple”,“app”):字符串比较函数,前一个是目标字符串,后一个是比较字符串。Instr()函数:寻找字符串内容函数Filter()函数:从数组中寻找字符串内容Replace()函数:取代字符串内容StrReverse()函数:字符串反转Split()函数:分割字符串函数Join()函数:连接字符串(2)、日期时间CurrentDate,CurrentTime,CurrentDateTime取得当前时间要取出日期中的年,月,日甚至时,分,秒则可以使用Year(),Month(),Day(),Hour(),Minute(),Second()函数IsDateTime(),IsDate(),IsTime()格式:WeekDay(),WeekdayName()及MonthName()格式:DateSerial()及TimeSerial()格式:DateDiff()(3)、类型转换CBool()函数:该函数仅接受Number或Currency类型的数据,若给定的值不为0则返回True,否则返回False,如下例:CBool(-12.1返回TrueCCur()函数:该函数可以将Number,String类型数据转换成Currency类型的数据如下例:CCur(“1200”) ‘返回1200CDbl()函数:将字符串转换成Number型的数据,如下例:CDbl(“143.2”) ’返回143.2CStr()函数:该函数可以把输入数据转换成字符串,也可以用来格式化数据内容,若输入的数据是Boolean值,则返回值只有两种“真”,“假”。若输入的参数是Number或Currency,则可以指定的参数就非常多,具体格式请读者们参考相关的帮助。CDateTime()、CDate()及CTime()可以使用CDateTime()、CDate()、CTime()将日期时间字符串,数字等转换成DateTime,Date,Time型的数据。(4)、数组(队列)Array()函数:用来建立数组,与Crystal语法中的MakeArray()具有相同的功能。注意Array中的数据类型要一致。UBound()函数:传递回数组的长度统计:可以对数组中的数据进行计算如求总和,求平均值等等。(5)、格式化(6)、判断NULL值判断Null的函数格式为:IsNull(字段名)比如下例:可检查用户名字是否为空:IsNull({CustomerList.Name})请注意,Null与空字符串时不一样的,Null指该字段中没有值。另外,还有PreviousIsNull()及NextIsNull()可检查上一条或则下一条字段值是否为空值。(7)、打印状态