Crystal Reports Designer  

For/Next 循环(Basic 语法)

For/Next 使您得以对一系列语句多次求值。这与 If 和 Select 语句不同,在 If 和 Select 语句中,程序在对公式求值时几乎同时传递每个语句。

如果事先知道需要对语句求值的次数,最好使用 For/Next 循环。

For 循环语法

示例 1

假设要反转 {客户.客户姓名} 字符串。例如,将“City Cyclists”变为“stsilcyC ytiC”。

Rem Reverse a string version 1
formula = ""
Dim strLen
strLen = Len ({Customer.Customer Name})
Dim i
For i = 1 To strLen
   Dim charPos
   charPos = strLen - i + 1
   formula = formula & _
             Mid({Customer.Customer Name}, charPos, 1)
Next i

假设字段 {客户.客户姓名} 当前值为“Clean Air”,检查该公式是如何运行的。将变量 strLen 赋值为“Clean Air”的长度,也就是 9。此时该变量亦被归类为数字变量。变量 i 称为 For 计数器变量,因为其值随着 For 循环的每次迭代而更改。换言之,它用于计算循环的迭代次数。For 循环将迭代 9 次。在第一次迭代时,i 是 1,接着是 2,然后是 3,依此类推,直到最后 i = 9。在第一次迭代时,{客户.客户姓名} 的第九个字符追加到空的特殊变量 formula 中。这样,在第一次迭代后 formula 等于“r”。在第二次迭代时,{客户.客户姓名} 的第八个字符追加到 formula 上,因此 formula 等于“ri”。程序继续迭代,直到第九次迭代后 formula 等于“riA naelC”,即反转字符串。

示例 2

下面是上述公式的更简单的演示,它使用具有负 Step 值 (-1) 的 Step 子句。对于“Clean Air”示例,在第一次迭代时 i 是 9,第二次迭代时 i 是 8,第三次迭代时 i 是 7,依此类推,直到最后一次迭代时 i 是 1。

Rem Reverse a string version 2
formula = ""
Dim i
For i = Len ({Customer.Customer Name}) To 1 Step -1
   formula = formula + _
             Mid({Customer.Customer Name}, i, 1)
Next i

示例 3

最简单的方法是使用内置函数 StrReverse:

Rem Reverse a string version 3
formula = StrReverse ({Customer.Customer Name})

在 Crystal Reports 中,内置的字符串函数可以处理许多字符串处理应用,而这些应用通常要使用 For/Next 循环或某些其他类型的循环来处理。但是,在处理字符串和数组方面,For/Next 循环能提供最灵活和最强大的功能。如果内置函数不适用于所需的应用程序,则该循环可能必不可少。

另请参见

For/Next 循环示例 | 退出 For/Next 循环