一个TQuery + tupdatesql 更新数据库表的问题

                            
碰到一个奇怪的问题,求解   
  在运行环境中发现一个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   自身的代码,   找不出原因,   各个字段和参数的值没感觉有问题.   请各位达人指导.

查看回复