怎样能实现当一个用户在修改一条记录的时候其他用户不能对该条修改进行修改,怎么能避免“脏数据”呢?

解决方案 »

  1.   

    打开 Recordset 之前先设置 LockType 属性,以指定提供者打开它时使用的锁定类型。如果 CursorLocation 属性设置为 adUseClient,则不支持 adLockPessimistic 设置。如果设置了不支持的值,将不产生错误,而使用所支持的最近似的 LockType。ADO中常用的LockType值有:adLockReadOnly
    adLockPessimistic
    adLockBatchOptimistic
    adLockOptimistic
      

  2.   

    必要的时候,你可以考虑使用事务:
    err.clear
    with conn
        .open strConn '打开连接
        .begintrans   '事务开始
        .execute "insert into ......"
        .execute "update ......."
    end withif err then
        conn.rollbacktrans  '回滚
    else
        conn.CommitTrans    '提交
    end if
      

  3.   

    忘记说了,使用事务必须DBMS支持
      

  4.   

    http://dev.csdn.net/develop/article/24/24978.shtm
      

  5.   

    我的做法是在資料庫中建立一個標如 NetControl
    當麼一個用戶修改某一條紀錄的時候,在 NetControl 表中紀錄該用戶的用戶名\和正在修改的紀錄的表名和ID號.每一個用戶在修改紀錄前都先去檢查一下,要修改的紀錄在 NetControl 表中有沒有紀錄,有紀錄的話,就提示該紀錄被某某用戶修改,請等待的消息.用這個辦法還可以限制某一個窗體或其他控件甚麼的同一時刻只能由一個或幾個用戶使用,比較自由阿.
      

  6.   

    执行“select field1 from Table1 for update”即可。--它的作用就是在你关闭该连接或提交之前保持独占 Table1。