能不能用ADO控件实现事务?具体怎么做,请教,谢谢!

解决方案 »

  1.   

    能不能使用外部连接,ado控件只实现连接内的查询.那就好办了.
      

  2.   

    在Access中,用ADO或DAO打开记录集之后,就可以开始事务
    beginTrans
    SQL语句



    commitTrans
    在beginTrans与commitTrans之间的所有语句,只要有一句执行失败,所有已执行的语句都会不生效。这种常用在同时操作几个表的情况下使用,以免造成数据有关联的几个表的数据不相符。事务用一句话来概括就是:全有或全无;要么全部生效,要么全部不生效。-------------------------------------------------------------------------------------
    Public Sub BeginTransX()   Dim cnn1 As ADODB.Connection
       Dim rstTitles As ADODB.Recordset
       Dim strCnn As String
       Dim strTitle As String
       Dim strMessage As String   ' 打开连接。
       Set strcnn=currentproject.connection
       Set cnn1 = New ADODB.Connection
       cnn1.Open strCnn   ' 打开 Titles 表。
       Set rstTitles = New ADODB.Recordset
       rstTitles.CursorType = adOpenDynamic
       rstTitles.LockType = adLockPessimistic
       rstTitles.Open "titles", cnn1, , , adCmdTable
       
       rstTitles.MoveFirst
        '开始事务
       cnn1.BeginTrans   ' 在记录集中循环并询问是否想要更改指定标题的类型。
       Do Until rstTitles.EOF
          If Trim(rstTitles!Type) = "psychology" Then
             strTitle = rstTitles!Title
             strMessage = "Title: " & strTitle & vbCr & _
             "Change type to self help?"         ' 更改指定雇员的标题。
             If MsgBox(strMessage, vbYesNo) = vbYes Then
                rstTitles!Type = "self_help"
                rstTitles.Update
             End If
          End If         rstTitles.MoveNext
       Loop   ' 询问用户是否想提交以上所做的全部更改。
       If MsgBox("Save all changes?", vbYesNo) = vbYes Then
          '如果回答是,就结束事务
          cnn1.CommitTrans
       Else
         '如果回答否,就回滚事务,取消所有操作
          cnn1.RollbackTrans
       End If
       rstTitles.Close
       cnn1.CloseEnd Sub 
      

  3.   

    http://www.disk2000.com/view_article.asp?id=314