Crystal Reports for Rational Application Developer 设计员指南

空字段以及如何使用 IsNull(Crystal 语法)

一般情况下,Crystal Reports 在公式中遇到空值字段时,会立即停止公式求值而不产生任何值。若要处理公式中的空字段值,则必须使用专门用于处理空字段值的特殊函数进行显式处理。这些函数包括:IsNull、PreviousIsNull 或 NextIsNull。
示例
{产品.颜色} 字段中既包含基本颜色(如“red”和“black”),也包含两个单词构成的更具描述性的颜色(如“steel satin”和“jewel green”)。以下示例是这样一个公式:当颜色为基本颜色时写出“basic”,为其他颜色时写出“fancy”。
If InStr({Product.Color}, " ") = 0 Then
formula = "basic"
Else
formula = "fancy"
对 InStr 的函数调用搜索 {产品.颜色} 字符串中是否有空格。如果发现有空格,则该函数调用返回该空格的位置,否则返回 0。由于基本颜色只有一个单词,没有空格,所以 InStr 会对基本颜色返回 0。
对于某些产品(如 Guardian Chain Lock)不记录颜色值,因而 {产品.颜色} 字段在数据库中对该记录有一个空值。这样,Guardian Chain Lock 记录就不在它旁边打印任何文字。
下例说明如何处理上面使用 IsNull 的示例:
If IsNull({Product.Color}) Or
InStr({Product.Color}, " ") = 0 Then
"basic"
Else
"fancy"
Crystal Reports 对以下条件求值时,与运算符相关:
IsNull({Product.Color}) Or
InStr({Product.Color}, " ") = 0
它首先对 IsNull ({产品.颜色}) 求值,当它确定该函数值为 True 时,便知道整个条件为 True,因此不需要检查是否
InStr({Product.Color}, " ") = 0
换句话说,当 Crystal Reports 能够预知整个表达式的结果时,将停止对布尔表达式求值。在下例中,公式防止在分母为 0 的情况下被零除:
Local NumberVar num;
Local NumberVar denom;
...
If denom <> 0 And num / denom > 5 Then
...




Business Objects,SAP 子公司
http://www.china.businessobjects.com/
支持服务
http://www.china.businessobjects.com/support/
Web 上的产品文档
http://support.businessobjects.com/documentation/