碰到一个奇怪的问题,求解
在运行环境中发现一个Oracle数据库表中的某些数字类型的字段经常被置成空值, 而Datetime类型的字段被置成0(用to_char('yyyymmdd',fld)显示为8个'0')查找了一下原因, 发现有是由于程序中使用tquery + Tupdatesql 更新数据库表引起的  情况如下
一个Tquery 通过一个查询连接表 A , 用Tupdatesql 绑定了 更新,插入,删除语句界面上用一个DBGrid关联到Tquery , tquery采用缓存方式 修改数据库记录时,选定一个记录,作了修改后,选定另一个记录(此时引起post), 再做修改, 完毕后 ,保存到数据库
保存到数据库的代码如下
 if (Query1.State = dsEdit) or (Query1.State = dsInsert) then
    Query1.Post;  try
    try
      Query1.DataBase.StartTransaction;
      Query1.ApplyUpdates;
      Query1.DataBase.Commit;
    except
      Query1.DataBase.Rollback;
      raise;
    end;
  except
      raise;
  end;现在的问题是, 当第一个修改的记录某个字段为空时,  保存结束后,第二个字段的值也被设置成空了. 我跟踪到 Delphi 自身的代码, 找不出原因, 各个字段和参数的值没感觉有问题. 请各位达人指导.