以下是对表的修改的代码:
   yfgz、g5、g10都是salary表的字段,字段类型为float(双精度型)。执行下面代码无错误,但是一个有趣的问题出现了。如果纪录的g5、g10字段有值,则能修改yfgz的值。如果纪录的g5、g10字段只要其中一个字段无值,就不能修改yfgz字段的值(此时yfgz为空)。dm.qr2.Close;
dm.qr2.SQL.Text:='update salary set yfgz=g5+g10';
dm.qr2.ExecSQL;怎么办?

解决方案 »

  1.   

    null和做任何运算的出来的都是null,同时他也不能等于任何东西包括null,他支持的运算符只有is
      

  2.   

    晕, g5, G10要有个默认为0的值才可以, 要不要用 
    'update salary set yfgz=IsNull(G5, 0)+ Isnull(g10,0)'来更新.
      

  3.   

    如果表设计时没有默认值就把SQL语句改一改:
    dm.qr2.SQL.Text:='update salary set yfgz=IIF(isnull(g5), 0, g5)+IIF(isnull(g10), 0, g10)';
      

  4.   

    按照大家讲的,在数据库中设置默认值为0,可以实现修改。但是有个问题: 当把该表作为dbgrid的数据源时,删除0后。dbgrid不显示0。然后修改yfgz还是不能正常进行。
      

  5.   

    在Fields的DisplayFormat设为#,###0.0