crystal Reports的公式应用实例
下面,我们通过几个实例来说明如何使用Crystal Reports的公式。
计量单位转换
这是一个非常简单的例子,主要是为了演示在公式中进行不同变量类型的转换和计算。
有时数据库字段的单位和报表中显示的单位不同,我们需要进行计量单位之间的转换,这时就离不开公式的使用。比如,我们的数据库中有一个Length字段,它记录以米为单位的长度,而在打印时需要以厘米为单位,我们就可以使用下面的函数。
ToText({Order Details.Length} *100) + "厘米"
这里的ToText函数就是转换数字型为字符型。常用的转换函数还有ToNumber等。
中文星期
在这个例子中我们将演示如何进行字符串操作。
我们在打印报表时经常会遇到显示中文星期的问题。Crystal Reports有DateOfWeek函数可以判断一个日期是星期几,比如DateOfWeek返回4时表示星期三。我们可以使用下面的公式来显示中文星期。这里的Today函数只是一个示例,你可以将其修改为你所需的日期函数或字段。
StringVar x;
NumberVar n;
x:="日一二三四五六";
n:=DayOfWeek (Today);
x:="星期"+x[2*n-1 to 2*n]
前两行,我们定义了字符串变量x和数字变量n。一个公式可以有很多行,但只有最后一行的计算结果才会作为整个公式的结果打印在报表中。
条件计算
在这个例子中我们重点演示如何使用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
条件统计
Crystal Reports提供了一些基本的统计功能,可以按分组进行统计。但是实际应用中的统计往往更为复杂。比如,我们需要根据一定的条件进行统计。假定我们要统计每组中单价超过10元的商品的销售数量。我们可以先在报表的Detail部分插入一个公式。假定该公式名字为ConditionSum,在公式内输入如下内容:
If {Order Details.UnitPrice} < 10 Then
0
Else
{Order Details.Quantity}
浙公网安备 33010602011771号