ADO+sql2000
怎样实现客户端在编辑同一记录时,允许A、B用户同时修改同一纪录,以提交晚的
用户修改的数据为准。(在dbgrid中修改)
现在的问题是:A用户修改保存后,b用户修改保存出现:无法定位的错误

解决方案 »

  1.   

    把ado设置为客户端缓存应该可以或者自己手动写update语句
      

  2.   

    试试
    adoquery1.CursorType := ctStatic;
      

  3.   

    只能直接发SQL语句。曾在医院系统的发药模块这样处理,这是由于ADO的静态游标属性决定的。
      

  4.   

    直接写UPDATE语句修改就避免了你所遇到的问题!
      

  5.   

    其实很简单,只需要加一个唯一性永不修改字段比如(自增长字段)作为键值,就行了。
    其实如果你的表中有键值,而且在修改时没有修改键值,那么更新应该没问题的前提是CursorType设为ctKeyset.
      

  6.   

    我的表有主键且是自增字段 表的结构如下 
    ID(自增自增字段)name(varchar,10)
    1                  001
    在客户端放一个DBGRID ,用户A修改001为002。保存。
    用户B修改001为003保存出错“无法为更新定位行”。
    但在B修改前刷新一下则没问题。
    另:用户A 删除了此记录,b只能把表关闭再打开。
    是否客户端不能打开操作同一个表?
    在BDE中有updatemode属性,在ADo中没有,怎样实现?
    to wizardqi:
    CursorType设为ctKeyset. 单一打开ADotable又成了 ctStatic,不行啊
    to 风归叶:
    怎样实现:更新设为用关键字更新(不用SQL语句)
      

  7.   

    将连接的事务锁设置为lSerializable,在更新里加个try来判断提交是否成功,
      

  8.   

    MDAC不支持ctKeyset,它只支持ctStatic,所以这种情况用直接发送UPDATE是最好的方法.关于这方面的讨论,李维在《Delphi 5.X ADO_MTS_COM+高级程序设计篇》已经说的很清楚了。