公式的結果,或是將公式放在報表中時所列印出來的值稱為公式傳回值。在 Crystal Reports 中的每一個公式都必須傳回值。Basic 語法藉由設定 Formula 特殊變數的值來傳回值。例如,以下是簡單的 Basic 語法公式,會傳回數值 10:
formula = 10
由公式所傳回的數值可以是以下七種簡單資料型別中的一種:數字、貨幣、字串、布林、日期、時間和日期時間。Crystal Reports 也支援範圍型別及陣列型別,但是公式無法傳回這些型別的值。
如果沒有為 Formula 變數指派數值,則 Basic 語法公式不完整。
有時候您可能只想寫一個公式來宣告或初始化全域變數。這種公式常會插入報表的報表首區段。如果是這種情形,可將任何數值指派給 formula 特殊變數。每個公式都必須傳回一個數值,就算您不想使用該數值也是一樣。
範例
Rem Some Global variable declarations Rem Remember to set the value of 'formula' Global x As String, y As Number, z As DateTime x = "hello" y = 10.5 z = #Aug 6, 1976# formula = 10
在同一公式內,可以多次設定 formula 變數。例如,假設某公司的出貨原則是當訂單金額超過 1000 元時就予以保險,低於此金額的訂單則不予保險。
Rem A formula that returns a String value If {Orders.Order Amount} >= 1000 Then formula = "Insured shipping" Else formula = "Regular shipping" End If
以上的公式在資料庫欄位 {Orders.Order Amount} 的數值大於或等於 1000 時,會傳回文字字串值「已投保出貨」;否則會傳回文字字串值「一般出貨」。請注意在上述範例中,公式變數出現了兩次。
如果公式變數已設定為某種型別值,之後就無法在相同的公式中將其再設定為另一種型別值。例如,如果將上述範例中的字串「一般出貨」替換成數字 10,就會發生錯誤,這是因為已經先將特殊變數公式設定成字串值「已投保出貨」了。
存在這個限制的原因是 Crystal Reports 需要事先知道公式的傳回型別,才能為傳回的數值配置足夠的儲存區。這是因為不同型別的儲存區需求不盡相同。另一個原因是公式欄位可用的格式化選項,會依其型別的不同而變化。例如,數字欄位有數字的格式化選項,例如顯示的小數位數。這並不適用於字串欄位。
注意 特殊變數 formula 是無法宣告的,這與其他 Basic 語法公式中所使用的變數不同。
Basic 語法不區分大小寫。這代表 formula、Formula 和 FORMULA 都會視為相同。這適用於所有 Basic 語法公式中的變數名稱、函式和關鍵字。
注意 本規則的唯一例外是字串。字串 Hello 與字串 hello 並不相同。
本節中的許多範例都參考 Xtreme 範例資料庫,此資料庫可從 Java 開發人員區域下載。若要下載 Xtreme 範例資料庫,請到 http://www.businessobjects.com/products/dev_zone/java/default.asp。