For 循环使您能够对一系列表达式多次求值。这不同于 If 和 Select 表达式,在 If 和 Select 语句中,程序在对公式求值时几乎同时传递每个语句。

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

使用 For 循环

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

Local StringVar str := "";
Local NumberVar strLen :
=
Length ({Customer.Customer Name});
Local NumberVar i;
For i :
= 1 To strLen Do
(
Local NumberVar charPos :
= strLen - i + 1;
str :
= str + {Customer.Customer Name}[charPos]
);
str

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

使用 For 循环和 Step 子句

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

Local StringVar str := "";
Local NumberVar strLen :
=
Length ({Customer.Customer Name});
Local NumberVar i;
For i :
= strLen To 1 Step -1 Do
(
str :
= str + {Customer.Customer Name}[i]
);
str
使用 StrReverse

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

StrReverse ({Customer.Customer Name})
在 Crystal Reports 中,内置的字符串函数可以处理许多字符串处理应用,而这些应用通常要使用 For 循环或其他类型的循环进行处理。但是,在处理字符串和数组方面,For 循环能提供最灵活和最强大的功能。如果内置函数不适用于所需的应用程序,则该循环可能必不可少。
posted on 2011-04-14 16:40  笨笨小媛  阅读(1242)  评论(0编辑  收藏  举报