水晶报表函数
函数使用 1.取上一条记录previous({tablename.fieldname}); 2.取字符串中某个字符第N次出现前面字符 split(string,"text")[1] 例:split("报销餐费","餐费")[1] ="报销" Basic公式的语法 1、数据类型 (1)、字符串型:String 字符串处理有很多函数,如:Left(),Right(),Mid(),Trim() (2)、数字型:Number (3)、货币型:Currency Crystal Reports中提供CCur()函数,可以将数值型数据转换为货币型数据,比如:CCur(500)。 (4)、布尔型:Boolean 比如True或False,一般Yes可取代True,No可取代False。 (5)、日期及时间型:Date,Time及DataTime Date类型用于存放日期,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 If if 布尔表达式 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)、While while 语句用来条件反复执行一段语句,该语句基本结构如下: 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) '返回True CCur()函数:该函数可以将Number,String类型数据转换成Currency类型的数据 如下例:CCur(“1200”) ‘返回1200 CDbl()函数:将字符串转换成Number型的数据,如下例:CDbl(“143.2”) ’返回143.2 CStr()函数:该函数可以把输入数据转换成字符串,也可以用来格式化数据内容,若输入的数据是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)、打印状态