Crystal Reports Designer  

Null 欄位和 Null 值 (Crystal 語法)

通常,當 Crystal Reports 碰到公式中的空值欄位時,會立刻停止驗算公式,而且不產生任何值。如果您想要在公式中處理空欄位值,必須明確地使用專門設計來控制它們的函式來處理:IsNull、PreviousIsNull 或 NextIsNull。

與運算子相關,在 Crystal Reports 驗算下列條件時:

IsNull({Product.Color}) Or
InStr({Product.Color}, " ") = 0

它會先驗算 IsNull ({Product.Color}),如果判斷出結果為 True,就表示整個條件都為 True,就不用繼續檢查下列條件:

InStr({Product.Color}, " ") = 0

換句話說,Crystal Reports 在演算出整個運算式的結果後,就會停止驗算布林運算式。在下列的範例中,在 denom 為 0 的情況下,公式不會以零來當除數:

Local NumberVar num;
Local NumberVar denom;
...
If denom <> 0 And num / denom > 5 Then
...

範例

{Product.Color} 欄位包含「紅」及「黑」等基本色彩,和花式的複合字色彩,例如「絲綢銀」和「寶石綠」。假設您想要撰寫一個公式,如果是基本色彩便印出「基本」,如果是其他色彩則印出「花式」。

If InStr({Product.Color}, " ") = 0 Then
   "basic"
Else
   "fancy"

函式呼叫 InStr 會去搜尋 {Product.Color} 字串中的空格。假如它找到空格,就會傳回空格的位置;否則傳回 0。由於基本色彩都只有一個英文字,不含任何空格,因此 InStr 碰到它們就會傳回 0。

對於 Guardian Chain Lock 這類產品,並不會記錄它的色彩值,所以在資料庫中該筆資料錄的 {Product.Color} 欄位具有空值。因此,Guardian Chain Lock 資料錄的旁邊不會印出任何文字。

下列範例說明如何用 IsNull 修正前一個範例:

If IsNull({Product.Color}) Or 
   InStr({Product.Color}, " ") = 0 Then
   "basic"
Else
   "fancy"

請參閱

運算子 | 公式編輯器