説明
Choose は、“インデックス”引数の値に基づいて“選択対象値”引数のリストから 1 つを選択して返します。
引数
インデックスは、選択するインデックスを指定する数値または数式。1 から 選択対象値の個数までの数値を指定します。この範囲外の値を指定すると、Choose はデフォルト値を返します。デフォルト値は選択対象値のデータ型によって決まります。たとえば、選択対象値が数値型の場合、デフォルト値は 0 です。また、選択対象値が文字列型の場合、デフォルト値は空の文字列(“”)です。
選択対象値は、選択対象の値。選択対象値は、すべて同じデータ型である必要があります。選択対象値には、単純型(数値、通貨、文字列、論理値、日付、時刻、日時)または範囲(数値型範囲、通貨型範囲、文字列型範囲、日付型範囲、時刻型範囲、日時型範囲)を指定できます。配列は指定できません。
戻り値
指定された選択対象値の 1 つ。返される値のデータ型は、選択対象値のデータ型と同じです。
アクション
Choose は、“インデックス”引数の値に基づいて“選択対象値”引数のリストから 1 つを選択して返します。たとえば、インデックスが 1 の場合は選択対象値1 を返し、2 の場合は選択対象値2 を返します。
用途
場合によっては、If-Then-Else 演算子や Select 制御構造の代わりに Choose を使用できます。たとえば、インデックスの値を文字列に対応付ける場合は、Choose 関数を使用するのが最も簡単です。
制御構造より Choose 関数を使用した方がよい場合は、レコード選択式がデータベース サーバーにプッシュ ダウンされるように式を書くときです。
関連するテクニックについては、『Crystal Reports ユーザーズ ガイド』の「最適化された Web レポートの作成」章の、機能拡張されたレコード選択式の使用に関する節を参照してください。
例
Choose (3, "Poor", "Fair", "Good", "Excellent")
文字列“Good”を返します。
Choose (2, 10 To 20, 100 To 200, 60 To 70)
数値型範囲の値 100 TO 200 を返します。
ある会社の会計年度が 7 月 1 日(第 3 四半期)に始まるとして、各受注日に対応する会計上の期を出力します。
Choose (DatePart ("q", {Orders.Order Date}),
"third fiscal quarter", "fourth fiscal quarter",
"first fiscal quarter", "second fiscal quarter"){Orders.受注日}が 1996 年 2 月 18 日の場合、DatePart 関数は、この日付が第 1 四半期に当たるので 1 を返します。したがって、1 番目の選択対象値の値、つまり文字列“第 3 期”が返されます。
コメント
Choose 関数のすべての引数は、値が返される前に評価されます。したがって、Choose を使用する場合は、予期しない副作用に注意する必要があります。たとえば、選択対象値の式の 1 つが 0 による除算を行うと、Choose 関数から返される値がその選択対象値でない場合でも、エラーが発生します。