返回列表 发帖

CrystalReport 水晶报表公式

1,参数字段还包含一个问号:{?my parameter field}。
2,公式字段包含一个 @ 符号:{@another formula }。
3,运行总计字段包含一个 # 符号:{#my running total}。
4,SQL 表达式字段包含一个百分比符号:{%my SQL expression}。

汇总字段求和:Sum({Orders.Order Amount}, {Orders.Ship Via})。
组名字段:GroupName({Orders.Ship Via})。

//将“数字”值 10 赋给变量 x
x := 10;

“数字范围”值示例
从 2 到 5 的数字范围(包括 2 和 5)
2 To 5
从 2 到 5 的数字范围(不包括 2 但包括 5)
2 _To 5
小于或等于 5 的所有数字
UpTo 5
小于 5 的所有数字
UpTo_ 5

“日期时间范围”值示例:
#Jan 5, 1999# To #Dec 12, 2000#
UpFrom #Jan 1, 2000#

----数组下标为1开始
由三个“数字”值组成的数组。第一个元素是 10,第二个是 5,第三个是 20。
[10, 5, 20]
由七个“字符串”值组成的数组:
["Sun", "Mon", "Tue", "Wed", "Th", "Fri", "Sat"]
由两个“日期时间范围”值组成的数组:
[#Jan 1, 1998# To #Jan 31, 1998#,
#Feb 1, 1999# To #Feb 28, 1999#]
可使用圆括号将想要的元素索引括起来,以从数组中提取个别元素。这称为下标数组:
[10, 5, 20] [2] //等于 5
数字范围还可用于下标数组。结果是另一个数组。例如:
[10, 5, 20] [2 To 3] //等于 [5, 20]

----
如果希望按区号创建客户报表,则可以创建一个变量,该变量将从客户传真号码中提取区号。下面是一个称为 areaCode 的变量示例:
Local StringVar areaCode;
areaCode := {客户.传真} [1 To 3];
---函数
Mid 函数示例
Local StringVar x := "hello";
Local StringVar y;
//从第 2 个位置开始,一直到字符串的末尾
y := Mid (x, 2); //y 现在是 "ello"
//从第 2 个位置开始,提取 1 个字符
y := Mid (x, 2, 1) //y 现在是 "e"
----控制结构运算符
-----与delphi语言相比少了分号(区分)

//If 示例 1
If {雇员.部门} = "Sales" Then
   {雇员.薪金} * .06
Else
   {雇员.薪金} * 0.04

Local CurrencyVar bonus := {雇员.薪金} * 0.04;
If bonus < 1000 Then
   1000
Else
   bonus

CurrencyVar bonus := {雇员.薪金} * 0.04;
If bonus < 1000 Then
   1000
Else If bonus > 5000 Then
   5000
Else
//select用法
Select {客户.传真}[1 To 3]
   Case "604", "250" :
      "BC"
   Case "206", "509", "360" :
      "WA"
   Default:
      "";
---for语句的运用
//反转字符串版本1
Local StringVar str := "";
Local NumberVar strLen :=
   Length ({客户.客户姓名});
Local NumberVar i;
For i := strLen To 1 Step -1 Do//用于--
(
   str := str + {客户.客户姓名}[i]
);
str
//反转字符串版本 2
StrReverse ({客户.客户姓名})
---exit for退出for语句
For i := 1 to UBound (names) Do
(
   If names [i] = "Fred" Then
   (
      result := i;
      Exit For
   )
);
result
---while语句
Local StringVar inString := "The 7 Dwarves";
Local NumberVar strLen := Length (inString);
Local NumberVar result := -1;
Local NumberVar i := 1;
While i <= strLen And result = -1 Do
(
   Local StringVar c := inString [i];
   If NumericText (c) Then
      result := i;
   i := i + 1;
);
result
也可用do----while至少执行一次。
Exit While退出该循环

返回列表