dim rs as new ado.recordsetrs.open "select * from tablename",con,3,3
Con.BeginTrans
  rs.addnew
  ...
  rs.update
Con.CommitTrans
問:當rs.addnew在執行時,如果再在其它終端執行"select * from tablename",那麼此終端將處在一直處在運行狀態,直到Con.CommitTrans執行完成,終端才顯示結果,這是什麼原因?是代碼有問題嗎?

解决方案 »

  1.   

    rs.open "select * from tablename",con,3,3  改成:rs.open "select * from tablename where 1 > 2",con,3,3
    新增记录,不需要列出所有记录的。
      

  2.   

    Con.BeginTrans
    con.execute "insert into tablename(...) values(...) "
    Con.CommitTrans
      

  3.   

    不是,是你启动了事务处理,在事务还没有提交的时候,被操作的表是被lock的,其他人不能访问
    只有当你提交事务的时候,才会释放锁
      

  4.   

    Con.BeginTrans
    这里处理的时间不宜过长,如果只是增加数据的话还是建议直接用insert语句
    Con.CommitTrans
      

  5.   

    執行的時間到不會很久,如果table中的數據量很大時,update的時間就會很久,這樣直接影響其它終端的查詢。
    insert 的方法想過,但用起來就是沒有update這麼爽,難道就沒有其它的解決辦法嗎?