Basic 語法中自訂函式的語法,與 Visual Basic 中函式的語法非常相似。
Function name [(argList)] [As type]
[statements]
[name=expression]
[Exit Function]
...
End Function
必要項目。這是函式的名稱。必須和函式的建立名稱完全相同。名稱的開頭不可以是數字,也不能包含底線以外的任何空格或標點符號。而且不可和 Basic 或 Crystal 語法中的關鍵字相同。
選擇性項目。代表函式所傳回的資料值型別。可以是任何簡單的 Crystal Reports 型別 (數字、貨幣、字串、布林、日期、時間、日期時間),或是範圍型別 (數字範圍、貨幣範圍、字串範圍、日期範圍、時間範圍、日期時間範圍)。如果省略傳回型別,則按 name 第一項指派中的運算式型別來推論 (隱含型別)。
注意 如果需要陣列傳回型別,您必須使用隱含型別,因為此項目沒有明確的標記法。
將 expression 指派給名稱,以指定函式的傳回值。如果已指定型別,則此為選擇性項目,如果未指定,Crystal Reports 便須此項目,才能透過隱含型別得知函式的傳回型別。
Exit Function 陳述式會造成 Crystal Reports 立即結束函式。您可以在函式主體的任何位置使用此陳述式,且不限次數。
注意 註解是唯一可以放在函式前,或是在函式宣告結尾的陳述式,方式為加上單引號或 Rem 陳述式。
[Optional] varName [()] As varType [=defaultValue]
選擇性項目。表示在呼叫自訂函式時可以省略引數。如果引數是選擇性項目,則所有後續的引數也必須是選擇性項目。如果您對選擇性引數提供值,您必須對每一個前置的引數提供值。
必要項目。可指定代表引數之變數的名稱。
選擇性項目。如果有的話,則表示此引數變數為陣列變數。
必要項目。可指出引數變數的型別。可以是上述 argList 說明中提到的七個簡單或六個範圍型別中的任一個。如果有選擇性括弧時,則型別為陣列型別,且其元素屬於 varType 型別。
這是選擇性引數的必要項目。defaultValue 是一個常數或常數運算式,也就是說,一個未包含任何變數的運算式,在編譯時可以簡化成常數值。如果在呼叫函式時省略選擇性引數,則會使用該引數的預設值。
注意 不同於 Visual Basic,如果是選擇性引數,則必須提供預設值。
所有的引數都是由數值所傳遞。在 Visual Basic 中,可以由數值或參考來傳遞引數,預設是由參考傳遞。不過,自訂函式並不支援參考引數。