水晶报表公式字段使用示例和公式字段语法【深海原创】
2008-05-26 14:30
465 查看
一.公式字段使用示例:
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.函数
水晶报表支持大量函数,包括数学函数、统计函数、日期函数、字符串函数、数组函数等等。在水晶报表的帮助文件对每个函数都有详细的介绍。
备注:部分参考有蓝色深海汇总和修改!部分是项目实战经验!
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.函数
水晶报表支持大量函数,包括数学函数、统计函数、日期函数、字符串函数、数组函数等等。在水晶报表的帮助文件对每个函数都有详细的介绍。
备注:部分参考有蓝色深海汇总和修改!部分是项目实战经验!
相关文章推荐
- [转]c#编程更改水晶报表中公式字段示例代码 [http://blog.csdn.net/xwdd129/archive/2006/05/29/760661.aspx]
- 水晶报表经验谈-使用格式化编辑器【深海原创】
- 水晶报表 使用公式 转化大写
- 水晶报表使用经验谈3--在报表中显示多个表的字段(通过表关联)
- 【转】如何使用代码动态设置水晶报表中的文本,字段等对象呢?
- 水晶报表传递参数及使用公式参数
- 水晶报表公式使用必读
- 水晶报表公式字段应用处理null方法
- 水晶报表公式使用必读
- 如何使用代码动态设置水晶报表中的文本,字段等对象呢?
- 水晶报表传递参数及使用公式参数
- 水晶报表的“SQL 表达式字段”能否使用“参数字段”?
- [转] 水晶报表公式使用 [来自--http://blog.csdn.net/cooldidi1/archive/2007/07/20/1700791.aspx]
- 水晶报表动态设置字段宽度(包括公式文本字段)
- 水晶报表动态设置字段宽度(包括公式文本字段)
- 水晶报表公式使用必读
- 水晶报表公式的典型用途示例汇总
- 水晶报表公式使用必读
- 如何使用代码动态设置水晶报表中的文本,字段等对象呢?
- 水晶报表公式使用