Cancel 方法范例

该范例使用 Cancel 方法,取消连接繁忙时正在连接对象上执行的命令。

Public Sub CancelX()   Dim cnn1 As ADODB.Connection
   Dim strCnn As String
   Dim strCmdChange As String
   Dim strCmdRestore As String
   Dim booChanged As Boolean
   
   ' 打开连接。
   Set cnn1 = New ADODB.Connection
      strCnn = "Provider=sqloledb;" & _
      "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
   cnn1.Open strCnn
   
   ' 定义命令字符串。
   strCmdChange = "UPDATE titles SET type = 'self_help' " & _
      "WHERE type = 'psychology'"
   strCmdRestore = "UPDATE titles SET type = 'psychology' " & _
      "WHERE type = 'self_help'"
   
   ' 开始事务,然后异步执行命令。
   cnn1.BeginTrans
   cnn1.Execute strCmdChange, , adAsyncExecute
   
   ' 做一会其他的事情(可以将其更改)。
      For i = 1 To 10
         i = i + i
         Debug.Print i
      Next i   ' 如果命令没有完成,取消执行并回卷事务。否则提交事务。
   If CBool(cnn1.State And adStateExecuting) Then
      cnn1.Cancel
      cnn1.RollbackTrans
      booChanged = False
      MsgBox "Update canceled."
   Else
      cnn1.CommitTrans
      booChanged = True
      MsgBox "Update complete."
   End If
   
   ' 如果已经更改,则恢复数据,因为这只是演示。
   If booChanged Then
      cnn1.Execute strCmdRestore
      MsgBox "Data restored."
   End If
      
   cnn1.Close
   
End Sub
www.holmesian.org