现在的位置: 首页 > 综合 > 正文

水晶报表公式字段使用示例和公式字段语法【深海原创】

2013年09月11日 ⁄ 综合 ⁄ 共 2217字 ⁄ 字号 评论关闭

一.公式字段使用示例:

A.计量单位转换 
    这是一个非常简单的例子,主要是为了演示在公式中进行不同变量类型的转换和计算。
    有时数据库字段的单位和报表中显示的单位不同,我们需要进行计量单位之间的转换,这时就离不开公式的使用。比如,我们的数据库中有一个Length字段,它记录以米为单位的长度,而在打印时需要以厘米为单位,我们就可以使用下面的函数。
ToText({Order Details.Length} *100) + "厘米"
    这里的ToText函数就是转换数字型为字符型。常用的转换函数还有ToNumber等。

B.中文星期
    在这个例子中我们将演示如何进行字符串操作。
    我们在打印报表时经常会遇到显示中文星期的问题。Crystal Reports有DateOfWeek函数可以判断一个日期是星期几,比如DateOfWeek返回4时表示星期三。我们可以使用下面的公式来显示中文星期。这里的Today函数只是一个示例,你可以将其修改为你所需的日期函数或字段。
StringVar x;
NumberVar n;
x:="日一二三四五六";
n:=DayOfWeek (Today);
x:="星期"+x[2*n-1 to 2*n]
    前两行,我们定义了字符串变量x和数字变量n。一个公式可以有很多行,但只有最后一行的计算结果才会作为整个公式的结果打印在报表中。

C.条件计算
    在这个例子中我们重点演示如何使用If-Then-Else操作符。
    条件计算在报表中使用得非常普遍。例如,我们要根据用户购买的总价格决定折扣的多少。我们假定用户购买200元以下的产品,不打折;200元到1000元提供5%的折扣;1000元以上提供7%的折扣。我们可以使用下面的公式计算最终用户需要付多少钱。
CurrencyVar cValue;
cValue := {Order Details.UnitPrice} *{Order Details.Quantity}; //计算总价格
If cValue < 200 Then
 cValue
Else If cValue < 1000 Then
 cValue * 0.95
Else
 cValue * 0.93

D.条件统计
    Crystal Reports提供了一些基本的统计功能,可以按分组进行统计。但是实际应用中的统计往往更为复杂。比如,我们需要根据一定的条件进行统计。假定我们要统计每组中单价超过10元的商品的销售数量。我们可以先在报表的Detail部分插入一个公式。假定该公式名字为ConditionSum,在公式内输入如下内容:
If {Order Details.UnitPrice} < 10 Then
 0
Else
 {Order Details.Quantity}

二.公式字段语法:

公式字段的语法比较简单,但支持的操作符和函数非常多。在公式中可以使用变量、常量。也可以引用数据库字段,其格式为:{库名.字段名}
A.操作符
  水晶报表支持大量的操作符,有些是常见的,也有些是Crystal Reports特有的。

B.算术操作符
  水晶报表支持+、-、*、/,还支持%(百分比)操作符,如100 % 500 = 20。

C.转换操作符
  转换操作符为$,它将数字转换为货币型,这样水晶报表会按照报表中的货币格式设置打印数据。

D.比较操作符
  水晶报表支持的比较操作符与Visual Basic相同:=、<>、<、>、>=、<=。

E.字符串操作符
  字符串连接的操作符为“+”。
    从字符串中取指定的字符使用“[]”操作符,相当于Visual Basic的Mid函数。“[]”内为字符的位置,第一个字符的编号为1。如:{file.ItemNumber} [4 to 5]
    判断一个字符串是否包括在另一个字符串使用in操作符。比如:"c" in "pcc"返回True。

F.范围操作符
     水晶报表允许用户建立一个范围,并判断数据是否包括在指定范围内。如“100.00 to 250.00”包括100到250之间的数据,而使用“50 in (100 to 250)”可以判断50是否在指定的范围内。

G.布尔操作符
  布尔操作符包括And、Not和Or。

H.数组操作符
  水晶报表支持数组,比如[100,200,300,400]是一个由4个元素组成的数组。可以使用in操作符判定数据是否是一个数组的元素,如:{file.State} in ["CA", "HI", "AK"]。

I.匹配操作符
  匹配操作符包括StartsWith和Like。StartsWith判断一个字符串是否以指定的字符串开头,如"PCC" startwith "P"返回True。Like操作符的用法类似Visual Basic,也是将字符串表达式和通配符表达式中的样式做比较。

J.其他操作符
    另一个重要的操作符是If…Then … Else …,就是我们所熟悉的条件判断,在我们后面得示例部分可以看到这个操作符的威力。
    如果要为变量赋值,需要使用“:=”符号,这是与Visual Basic不同的。
    在公式中也可以加上注释以方便阅读。注释符号为“//”,“//”符号后面的内容将被忽略。
    公式中也可以包括多个语句行,行尾使用“;”分割。

K.函数
  水晶报表支持大量函数,包括数学函数、统计函数、日期函数、字符串函数、数组函数等等。在水晶报表的帮助文件对每个函数都有详细的介绍。

备注:部分参考有蓝色深海汇总和修改!部分是项目实战经验!

抱歉!评论已关闭.