Crystal Reports  

多个表达式(Crystal 语法)

一般情况下,每个表达式占一行,但如果表达式需要更多的空间,可以在下一行续写该表达式。

下面的公式由五个表达式组成。由于公式中最后一个表达式返回公式的值,因此该公式返回的值为“数字”值 25。

示例

//Expressions example
//The first expression. Its value is the Number
//value 30
10 + 20;
//The second expression. Its value is the String
//"Hello World". It takes up two lines.
"Hello " +
"World";
//The third expression. Its value is of Number type
{Orders Detail.Quantity} * 2 - 5;
//The fourth expression. Its value is of String type
If {Orders Detail.Quantity} > 1 Then
   "multiple units"
Else
   "one unit";
//The fifth and final expression. Its value is the
//Number value 25
20 + 5

也允许在公式中最后一个表达式的后面加上分号,但这是可选的。例如,上述公式的末尾可以是:

20 + 5;

表达式一节中,某些示例公式没有分号。这是因为这些示例由单个表达式组成,并且最后一个表达式后面的分号是可选的。使用 Crystal 语法的许多表达式可以作为单个表达式编写。

注意,在“multiple units”字符串后没有分号。事实上,如果在这里加上分号,程序将报告错误。这是因为分号分隔表达式,而

Else
   "one unit";

不是单独的表达式。它不能与 If 分开而独立存在。事实上,由于在某些情况下,该字符串描述 If 表达式将返回的值,所以它是 If 表达式的完整部分。

注意   该示例并不符合实际情况,因为公式中的前四个表达式对最后一个表达式没有任何影响。

前面的表达式是如何影响后面的表达式的

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

示例

//First expression. It declares the Number variable x
//and then returns the value of an uninitialized
//Number variable, which is 0.
NumberVar x;
//Second expression. It assigns the value of 30 to x,
//and returns 30.
x := 30

如果省略第一个表达式,上面的公式将报告错误。这是因为第二个表达式引用“数字”变量 x,并且在程序理解涉及 x 的表达式之前需要声明 x。

一般情况下,使用变量获得公式中前面的表达式,以影响最后一个表达式。请参见变量

另请参见

If 表达式