创建公式时,可以选择使用 Crystal 语法或 Basic 语法。几乎任何使用某种语法编写的公式都可以使用另一种语法来编写。报表可以包含使用 Crystal 语法的公式,也可以包含使用 Basic 语法的公式,但一个公式只能使用一种语法。

如果熟悉 Microsoft Visual Basic 或 Basic 的其他版本,则您可能更熟悉 Basic 语法。通常情况下,Basic 语法与 Visual Basic 相似,不同的是它有可以处理报表的特定扩展。

Crystal 语法

Crystal 语法基础

公式的结果

公式的结果(即将公式置于报表中时所显示的值)称为公式返回值。

公式返回的值可以是所支持的七种简单数据类型之一。这些数据类型是:数字、货币、字符串、布尔值、日期、时间和日期时间。

例如,假设一个公司有这样的送货政策,即一千美元以上的订货可享受保险,而低于此金额的订货没有保险:

If {Orders.Order Amount} >= 1000 Then
"投保货运"
Else
"普通货运"

若数据库字段 {订单.订单金额} 的值大于或等于 1000,则以上公式返回文本串值“投保货运”,否则返回文本串值“普通货运”。

基于表达式的语法

Crystal 语法公式由一系列表达式组成。表达式是产生给定类型值的关键字、运算符、函数和常量值的任意组合。最后一个表达式的值是公式返回的值,并打印出来。每个表达式必须用分号 (;) 与前面的表达式隔开。

在理解 Crystal 语法时,认识到 Crystal 语法公式由一系列表达式组成,最后一个表达式的值作为公式的结果这一点很重要。这种基于表达式的语法使您得以编写具有许多功能但非常短的公式。

大小写

Crystal 语法公式中所使用的所有变量名称、函数和关键字都不区分大小写。例如,键入的关键字 Then 与 then 或 THEN 相同。

该规则的唯一一个例外是字符串。字符串“Hello”和字符串“hello”是不相同的。

 
注释(Crystal 语法)
公式注释是包含在某一公式中的注释,用以解释其设计和操作。注释不打印出来,并且不影响公式;它们只出现在公式编辑器中。使用注释解释公式的目的或解释编写公式所涉及的步骤。 
注释以两个反斜线 (//) 开始,后面是注释文本。同一行中斜杠后面的所有文字都被看作是注释的一部分: 
//此公式返回字符串“Hello”。
//这是另一个注释。
"Hello" //可以在一行的结尾添加注释。
//注释可以出现在公式文本之后。

字段(Crystal 语法)

字段如何在公式中显示

数据库、参数、公式、运行总计、SQL 表达式等字段的名称均用花括号括起来。

数据库字段名称取自于数据库:{Employee.Last Name}

创建字段时指定参数、公式、运行总计、SQL 表达式等字段的名称。

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

汇总和组名字段看起来象函数调用。但是,它们实际上是报表字段的速记写法。

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

示例

该示例中的公式使用 Xtreme 数据库。若要得出自订购日期以来的送货天数,请从订购日期数据库字段中减去送货日期数据库字段:

{Orders.Ship Date} - {Orders.Order Date}

若要得出某一给定订购产品的美元总金额,请将其单价乘以订购数量: 计算原单价 80% 的售价: 

{Orders Detail.Unit Price} * {Orders Detail.Quantity}
{Orders Detail.Unit Price} * 0.80

表达式(Crystal 语法)

表达式是产生给定类型值的关键字、运算符、函数和常量值的任意组合。例如:
//计算结果为数字值 25 的表达式10 + 20 - 5//计算结果为字符串值“这是字符串。”的表达式“这是字符串。”
Crystal 语法公式由一系列表达式组成。最后一个表达式的值是公式返回的值,并打印出来。每个表达式必须用分号 (;) 与前面的表达式隔开。

赋值(Crystal 语法)

赋值运算符是一个冒号后面跟一个等号 (:=)。 
例如: 
//将数字值 10 赋给变量 x。
x := 10;
//将字符串值“hello”赋给名为 greeting 的变量。
greeting := "hello";
等于运算符 (=) 用于检查两个值是否相等。常见的错误是实际上应该使用赋值运算符时使用等于运算符。这可能生成某个奇怪的错误信息,
或者因为使用等于运算符在语法上通常是正确的,所以根本没有错误信息出现。例如:
greeting = "hello";
上面的公式检查变量 greeting 保存的值与“hello”的值是否相等。如果相等,表达式的值为真,如果不相等,表达式的值则为假。在任何情况下,
这都是完全正确的 Crystal 语法表达式(假设 greeting 是字符串型变量)。
 
  
posted on 2011-04-11 16:14  笨笨小媛  阅读(1266)  评论(0编辑  收藏  举报