Basic 语法基础

常见的功能

  • 许多 Basic 语法函数与其在 Visual Basic 中的对应函数用法相同。其中包括字符串函数(如 Len、Mid 和 Filter)、数学函数(如 Abs、Rnd 和 Sin)、财务函数(如 PV)、编程快捷方式函数(如 IIF)以及日期函数(如 DateSerial、DateAdd 和 DateDiff)。
  • Visual Basic 所支持的大多数运算符在 Basic 语法中也支持。例如,字符串串联符 (&) 和日期时间字面值 (#...#)。
  • 大多数语句和控制结构使用与 Visual Basic 相同的语法。其中包括 If、Select、Do While、Do Until、While 和 For/Next 语句。
  • 例如,支持 Basic 样式的注释和行继续符,同样也支持使用 Basic 语言的新行、冒号和等号。

公式的结果

公式的结果(即将公式置于报表中时所显示的值)称为公式返回值。Crystal Reports 中的每个公式均必须返回一个值。Basic 语法通过设置特殊变量“formula”的值来实现这一点。例如,下面是一个简单的 Basic 语法公式,返回值 10:

formula = 10

由公式返回的值可能是所支持的 7 种简单数据类型中的一种:数字、货币、字符串、布尔值、日期、时间和日期时间。Crystal Reports 还支持范围类型和数组类型,但公式无法返回这些类型。

名为 formula 的变量必须赋以一个值

若未给名为 formula 的变量赋值,它就不是完整的 Basic 语法公式。

有时可能想编写只是声明和初始化一些全局变量的公式。通常将这些公式插入报表的报表头节。在这种情况下,请给名为 formula 的特殊变量赋以任意值。每个公式都必须返回一个值,即使您对使用该值不感兴趣。

示例

Rem 某些全局变量声明。
Rem 记住设置“formula”的值。
Global x As String, y As Number, z As DateTime
x = "hello"
y = 10.5
z = #Aug 6, 1976#
formula = 10

数据类型和名为 Formula 的变量

在单个公式中可以设置几次名为 formula 的变量。例如,假设一个公司有这样的送货政策,即一千美元以上的订货可享受保险,而低于此金额的订货没有保险:

Rem 返回字符串值的公式
If {Orders.Order Amount} >= 1000 Then
formula = "投保货运"
Else
formula = "普通货运"
End If

若数据库字段 {订单.订单金额} 的值大于或等于 1000,则上面名为 formula 的变量返回文本串值“投保货运”,否则返回文本串值“普通货运”。请注意,在以上示例中这一 formula 变量出现了两次。

若名为 formula 的变量设置为某一类型的值,则后面不能在同一个公式中将该变量设置为另一种类型的值。例如,将上例中的字符串“普通货运”用数字“10”替换会导致错误,因为特殊变量 formula 最初已设置为字符串值“投保货运”。

这样限制是因为 Crystal Reports 需要预先知道公式将返回何种类型,以便可以为返回的值分配足够的存储空间。这是因为不同的类型需要不同的存储空间。另一个原因是公式字段可用的格式设置选项取决于其类型。例如,数字型字段有数字格式设置选项(如要显示的小数位数),而这对于字符串型字段来说则毫无意义。

Note注意

名为 formula 的特殊变量不应声明,这一点与 Basic 语法公式中使用的其他变量不同。

大小写

Basic 语法不区分大小写即 “formula”、”Formula” 和 “FORMULA” 被看作是相同的。这一点也适用于 Basic 语法公式中使用的所有变量名、函数和关键字。

Note注意

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

练习使用 Xtreme 示例数据库

本节中的许多示例引用 Xtreme 示例数据库。

Note注意

有关如何配置此数据库及其 ODBC 条目的信息,请参见 “Xtreme 示例数据库的位置”“Xtreme 示例数据库的 ODBC DSN 条目”

在此节中: