引數
索引是指定選擇索引的數字或數值運算式。它必須介於 1 與可用選擇個數之間。如果它超出界限,Choose 會傳回預設值。(傳回的預設值依據選擇型別而定,例如,如果選擇是數字型別,預設值就是 0;如果選擇是字串型別,預設值就是空白字串 ("")。)
選擇是要從中選擇的選擇項之一。所有選擇必須屬於同一型別。選擇可以是任何簡單型別 (數字、貨幣、字串、布林、日期、時間或日期時間) 或範圍型別 (數字範圍、貨幣範圍、字串範圍、日期範圍、時間範圍或日期時間範圍),但不可以是陣列。
傳回
在已知選擇清單中的一個值。傳回值的型別與選擇屬於同一型別。
動作
Choose 根據索引值傳回選擇清單中的值。例如,如果索引是 1,就傳回選擇1,如果索引是 2,就傳回選擇2,依此類推。
典型用法
在某些情況下,可以使用 Choose 來取代 If-Then-Else 運算子或 Select 控制結構。例如,如果要將索引值對應到字串值,最簡單的方法就是使用 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")如果 {訂貨主檔.訂貨日期} 是 1996 年 2 月 18 日,DatePart 函式呼叫會傳回 1,因為這個日期在日曆年的第一季。因此,公式傳回第一個選擇值,也就是字串值 "third fiscal quarter"。
註解
傳回選擇之前,會驗算 Choose 函式的每個引數。因此,使用 Choose 要小心,以免發生不必要的副作用。例如,如果選擇運算式之一會造成除以零,那麼即使該選擇並不是 Choose 函式傳回的選擇,還是一樣會發生錯誤。