Crystal Reports Designer  

For 迴圈 (Crystal 語法)

For 迴圈可讓您多次驗算一連串的運算式。不像在 If 和 Select 運算式中,在公式驗算的過程中,程式最多只經過每個運算式一次。

如果您事先知道運算式需要驗算的次數,最適合使用 For 迴圈。

For 迴圈語法

範例一

假設您想要將 {Customer.Customer Name} 字串反轉過來,例如,將 City Cyclists 變成 stsilcyC ytiC。

//Reverse a string version 1
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

假設 {Customer.Customer Name} 欄位目前的值是 Clean Air,請檢查這個公式如何運作。已將變數 strLen 指派為 Clean Air 字串的長度,也就是 9。變數 i 也稱為 For 計數器變數,因為其數值會隨著每次 For 迴圈的重複而改變。也就是說,它是用來計算迴圈的遞迴次數。For 迴圈會重複進行 9 次,第一次時 i 是 1,然後變成 2、3,並一直增加,直到 i = 9 為止。在第一次遞迴時,{Customer.Customer Name} 的第 9 個字元會加到空字串變數 str 之後,所以,在第一次遞迴之後,str 就等於 r。進行到第二次迴圈時,會將 {Customer.Customer Name} 的第八個字元附加到 str 之後,因此 str 就等於 ri。這個程序會持續進行,直到第九次迴圈完成後 str 等於 riA naelC 為止,這個值也就是反轉的字串。

範例二

這個範例是上述公式的簡化版本,使用 Step 子句,並且包含負的 Step 值 –1。在 Clean Air 範例中,第一次遞迴時 i 是 9,第二次是 8,第三次是 7 依此類推,直到最後一次遞迴後變成 1 為止。

//Reverse a string version 2
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:

//Reverse a string version 3
StrReverse ({Customer.Customer Name})

在 Crystal Reports 中,內建字串函式可以控制許多傳統上是以 For 迴圈或其他迴圈來處理的字串處理應用程式。但是,For 迴圈在處理字串上提供了最大的彈性,在處理陣列上的功能也非常強,這些優點在內建函式無法應付時顯得非常重要。

請參閱

For 迴圈範例 | 結束 For 迴圈