我用一个TIMER1来对表A的合乎条件的数据进行修改,在另一窗口B打开表A,并此窗口中进行相应添加修改删除操作,此时TIMER1时间片刻到了,将表A某些数据改变,而在窗口B中将没有得到更新,此时再按保存时,会出现“无法更新定位行。”,应如何解决?十万火急,拜托各位。

解决方案 »

  1.   

    用timmer来更新数据好像还是第一次见
      

  2.   

    我觉得是你的update sql不对吧,你的update语句是不是用组件自动生成的,在where子句中带有每个字段的那种。如果是,你可以修改它,只保留唯一索引的字段。当然,如果Timer1连唯一索引的这个字段都要改变的话,就没办法了。
      

  3.   

    timer1中改变A表数据后需要立即刷新B窗口中对应的数据集,如adoquery。
    这样就应该不会包那个错误了。例如你用一个adoquery打开一个表进行操作,同时用一个adocommand改变了这个表的某条数据,
    你如果再在adoquery上对该条数据进行修改后保存,程序会认为adoquery缓存里的数据与表中的数据不一致,从而导致这个错误的产生。
      

  4.   

    在FORM2中也用一个TIMER1,刷新一下看看
      

  5.   

    A表在timer1的驱动下更新数据时,建议刷新B窗体的数据
      

  6.   

    HEHE
    如果非要这么干的话
    定义一个约定标志 
    A如果来写了数据库
    就把这个标志置为TRUE
    如果在B更新或移动记录之前
    判断一下这个标志
    如果为真就刷新数据
    然后把这个标志置F
      

  7.   

    我试过在编辑修改删除时,首先将REFRESH,能够解决问题,但不知道对速度的影响有多大。
      

  8.   

    我试过在编辑修改删除时,首先将数据集REFRESH,虽然能够解决问题,但是十分之慢,形如死机,各位这个问题应该如何处理呢?或者有何高见??
      

  9.   

    这样是有问题的,先给你把问题指出,自己改吧在保存数据时,数据控件会把更新前缓存中的数据(没有修改时)与数据库中的数据进行比较,如果不一致就会出现你的问题如果要用timer我强烈建议你用事务机制。可能说的不是很清楚。请各位多指正。^_^
      

  10.   

    你可以在A表更新时,同时B表也就Refresh一次。然后在B表也就可以随你干什么。