For/Next 迴圈可多次驗算一組陳述式。這與 If 和 Select 陳述式不同,這兩種陳述式在驗算公式時,程式最多只會通過每個陳述式一次。
如果事先知道陳述式需要驗算的次數,則 For/Next 迴圈是最適用的。
範例一
假設您想要將 {Customer.Customer Name} 字串反轉過來,例如,將 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
假設 {Customer.Customer Name} 欄位目前的值是 Clean Air,請檢查這個公式如何運作。已將變數 strLen 指派為 Clean Air 字串的長度,也就是 9。此時此變數也成為數字型別。變數 i 也稱為 For 計數器變數,因為其數值會隨著每次 For 迴圈的重複而改變。也就是說,它是用來計算迴圈的遞迴次數。For 迴圈會重複進行 9 次,第一次時 i 是 1,然後變成 2、3,並一直增加,直到 i = 9 為止。在第一次進行迴圈時,{Customer.Customer Name} 的第九個字元會被加到空的特殊變數公式中。第一次迴圈完成時,formula 等於 r。進行到第二次迴圈時,會將 {Customer.Customer Name} 的第八個字元附加到 formula 中,因此 formula 就等於 ri。這個程序會持續進行,直到第九次迴圈完成後 formula 等於 riA naelC 為止,這個值也就是反轉的字串。
範例二
這個範例是上述公式的簡化版本,使用 Step 子句,並且包含負的 Step 值 1。在 Clean Air 範例中,第一次遞迴時 i 是 9,第二次是 8,第三次是 7 依此類推,直到最後一次遞迴後變成 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
範例三
這個最簡化的版本是使用內建函式 StrReverse:
Rem Reverse a string version 3 formula = StrReverse ({Customer.Customer Name})
在 Crystal Reports 中,內建字串函式可以控制許多傳統上是以 For/Next 迴圈或其他迴圈來處理的字串處理應用程式。然而,For/Next 迴圈還是在處理字串和陣列時最具彈性的有效方法。如果內建的函式沒有您要的效果時,迴圈的應用就變得很重要。