你在ApplyUpdates之后再CommitUpdates。

解决方案 »

  1.   

    没用的,即使用CommitUpdates清了缓冲也不行,楼上的朋友可以试试。
      

  2.   

    自己多写一些代码,不要用Tquery直接修改
      

  3.   

    是吗?那你再用Refresh看看,应该比Close再Open要快一点
      

  4.   

    实际上同样的问题也一直困扰着我,不过我和你遇到的问题有点不同,我使用ADO元件连接SQLServer的,新增记录后,如果在SQLServer中对某个字段设置了默认值,比如ID=newid(),而新增记录后ID字段没有填写的话,就会出问题,ADO就会报告错误,我的解决方法是一次性的将全部的字段都填满,在响应OnPost事件中将任何空的字段以默认值填写,newid()在Delphi中对应的函数是CoCreateGuid,在ActiveX单元中,我找的好辛苦!
      

  5.   

    这种方案好像是行不通的。
    结果集是在内存里,所有的操作都是在内存里,执行CommitUpdates后内存里同时被释放。
    提交后,再打开是可行的,你让结果集尽可能的小。速度就不会慢啦。Delphi里利用query
    增加记录是不可取的。(refresh是不能够执行)
      

  6.   

    我的情况与BlueTrees(蜗牛)兄的不同之处是通过自动增量ID设置为主键的,有没有什么更好的办法解决吗?我使用了TClientDataset组件,想通过三层的思想来解决,还是不行,当然提示出错的信息变了,oldfriend(并不陌生)所说的“让结果集尽可能的小”是不行的,我一定要让所有的记录都显示在DBGrid上,这是程序设计的要求。
      

  7.   

    新增加的记录,必须先post,然后再ApplyUpdates。你就可以再编辑它了。
      

  8.   

    To skimwater(掠水惊鸿) :已经Post过了,这个问题不是那么简单的,建议兄弟们先自己试试,不要光是猜测运行结果。