我用clientDataSet打开了结果集 可以进行插入操作 插入数据操作能正常保存到数据库中,但是修改和删除操作无法保存到数据库中,急啊 我的保存代码如下:
   self.ClientDs.Edit;
   self.ClientDs.Post();
   self.ClientDs.ApplyUpdates(-1);
删除操作代码:self.ClientDs.Delete;
  self.ClientDs.ApplyUpdates(-1);
插入代码:  self.ClientDs.Insert;
真不理解为什么 插入能保存到数据库中 而删除和修改却不能。

解决方案 »

  1.   

    系统没提示什么错误,我在窗口关闭事件加了  
       if self.ClientDs.ChangeCount >0 then  showmessage('dddd');
    这句话 无论我是否点击保存按钮 窗口关闭的时候都谈出 对话框 dddd 
    好像是self.ClientDs.ApplyUpdates(-1); 有毛病 可是我找不到问题的所在 
    不知道如何解决????
      

  2.   

    你这样去写
    编辑保存的时候:
     with self.ClientDs do
     begin
       Edit;
       Post;
       if ApplyUpdates(0)<>0 then
         begin
          showmessage('编辑保存不成功!');
          Abort; 
         end;
      end;
      

  3.   

    按照你说的这个增加可以,编辑、删除都不能保存进去的话,我想有可能是你在编辑、删除之前数据集没有定位到你要操作的那条记录,你可以在这个操行之前先进行一下定位
    self.ClientDs.Locate('ID',aID,[]);//{ID主键值(一般都用主键的,唯一性)aID,通过先前先获得此条记录的ID值,比方说在你做什么操作之前先获得它,然后在编辑之前先定位,再进行编辑、删除等操作试一试}
      

  4.   

    你用的是Oracle数据库吗?用Oracle就有这个问题,用SQLSERVER就没有问题。如果要用Oracel,那么就不要用ADO,要用BDE,手工编写更新代码,可以参考李维的《Delphi 5.X分布式多层应用系统篇》,网上很多地方可以下载的。