取值的时候先做判断
如果为null,赋值为0,再加他们的和,这样可以吗?

解决方案 »

  1.   

    公式里好像不能有null, 不知道怎么判断了...
      

  2.   

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