博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
水晶报表常用公式
阅读量:6158 次
发布时间:2019-06-21

本文共 2287 字,大约阅读时间需要 7 分钟。

  hot3.png

 

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.函数 

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

转载于:https://my.oschina.net/960823/blog/1539406

你可能感兴趣的文章
Runtime类
查看>>
eclipse decompiler
查看>>
记一个搜索网盘资源的网站
查看>>
jdk1.7和jdk1.8的String的getByte方法的差异
查看>>
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>