用vb6+sql server2000
我有一断代码:先删除一些记录再插入一些记录.
x_Cn.Execute "Delete ...."
For I = 0 To 10
    x_Cn.Execute "Insert ...."
Next I
我知道可以在删除或插入时用这些语句: begintrans committrans rollbacktrans.请问我怎样用到我的这段代码中去呢?
这样对不对呢?请指点一下点,本人不胜感激...
Call x_Cn.BeginTrans
x_Cn.Execute "Delete ...."
Call x_Cn.CommitTrans 
For I = 0 To 10
    Call x_Cn.BeginTrans
    x_Cn.Execute "Insert ...."
    Call x_Cn.CommitTrans
Next I
msdn上这样解释committrans:保存所有更改,并结束当前事务,它可以启动新的事务..
请问"它可以启动新的事务"是不是已等价用了语句 Call x_Cn.BeginTrans.我的意思是说是不是在我上面的代码"inset..."之前不用再加 Call x_Cn.BeginTrans语句?多谢!!!

解决方案 »

  1.   

    Call x_Cn.BeginTrans
    x_Cn.Execute "Delete ...."
    'Call x_Cn.CommitTrans 
    For I = 0 To 10
    '    Call x_Cn.BeginTrans
        x_Cn.Execute "Insert ...."
        'Call x_Cn.CommitTrans
    Next I
    Call x_Cn.CommitTrans这样再试试看
      

  2.   

    x_Cn.BeginTrans
    x_Cn.Execute "Delete ...."
    For I = 0 To 10
        x_Cn.Execute "Insert ...."
    Next I
    x_Cn.CommitTrans
      

  3.   

    on error goto CancelCall x_Cn.BeginTrans
    x_Cn.Execute "Delete ...."
    Call x_Cn.CommitTrans 
    For I = 0 To 10
        Call x_Cn.BeginTrans
        x_Cn.Execute "Insert ...."
    Next I
    Call x_Cn.CommitTransexit subCancel:
    if x_cn.errors.count>0 then  x_cn.rollbackTrans
    msgbox err.description
    resume next
    end sub
    注意,事务是原子性的,也就是说,你删除和插入是必须都完成的,否则删掉没有插,数据丢失,或者插的时候关键字重复,插入不成功,但是你已删除了数据,也会出问题,当事务回滚时,撤销你的所有操作不可在for里面committrans
    事务一旦提交,就必须重新再开启,否则会报错的,就这么多,好运:)
      

  4.   

    guxizhw(失落的彩虹) :
      大哥:
      正在等你回答我的問題啊!