Crystal Reports Designer  

For/Next ループ(Basic 構文)

For/Next ループを使用すると、いくつかのステートメントを繰り返し評価できます。これは、式の評価中に、各ステートメントが多くても一度しか評価されない If や Select ステートメントとは対照的です。

ステートメントを評価する回数があらかじめわかっている場合は、For/Next ループが最適です。

For ループの構文

例 1

{Customer.顧客名}の文字列を反転する必要があるとします。たとえば、“City Cyclists”を“stsilcyC ytiC”にします。

Rem 文字列の反転 - バージョン 1
formula = ""
Dim strLen
strLen = Len ({Customer.顧客名})
Dim i
For i = 1 To strLen
Dim charPos
charPos = strLen - i + 1
formula = formula & _
Mid({Customer.顧客名}, charPos, 1)
Next i

{Customer.顧客名}フィールドの現在の値が“Clean Air”であるとして、この式がどう機能するかを調べてみます。変数 strLen には、“Clean Air”の長さ 9 が代入されます。また、この時点で数値型の変数として指定されます。変数 i は、For ループが繰り返されるたびにその値が変化することから、“For カウンタ変数”と呼ばれます。つまり、For カウンタ変数は、ループの繰り返し回数をカウントするために使用されます。For ループは、最初に i が 1、次に i が 2、次に i が 3 と変化し、最後に i = 9 になるまで 9 回繰り返されます。最初の繰り返しで、{Customer.顧客名}の 9 番目の文字が空の特殊変数 formula に追加されます。したがって、formula は、最初の繰り返しの後で“r”になります。2 回目の繰り返しで、{Customer.顧客名} の 8 番目の文字が formula に追加されるので、formula は "ri" になります。9 回目の繰り返しの後に formula が反転文字列 "riA naelC" になるまで、この処理が続けられます。

例 2

次の例では、Step 句に負のステップ値 -1 を使用して、上の式をより単純化しています。“Clean Air”の例では、最初の繰り返しで i は 9、2 回目は 8、3 回目は 7 と変化し、最後に 1 になるまで続きます。

Rem 文字列の反転 - バージョン 2
formula = ""
Dim i
For i = Len ({Customer.顧客名}) To 1 Step -1
formula = formula + _
Mid({Customer.顧客名}, i, 1)
Next i

例 3

最も簡単な形式は、次に示すように、組み込み関数 StrReverse を使用するものです。

Rem 文字列の反転 - バージョン 3
formula = StrReverse ({Customer.顧客名})

Crystal Reports に組み込まれている文字列関数は、従来 For/Next ループなどのループを使って処理されていた文字列操作を数多く実行できます。ただし、For/Next ループは、最も柔軟に文字列を処理できる方法であり、また配列を処理するための機能に優れています。配列は、組み込み関数ではユーザーが目的とする処理をこなせない場合に不可欠な要素です。

参照

For/Next ループの例 | For/Next ループから抜ける