Canceling Operations

Your application can deny the execution of any operation that triggers a Will event. By changing the status parameter passed to any Will event to adStatusCancel, the operation will not execute. However, if the adStatus property is set to adStatusCantDeny, you cannot cancel the operation.

For instance, assume that you want to restrict the connection to a data source. By entering the following code for the WillConnect event, the connection will never occur:

Private Sub con_WillConnect(ConnectionString As String, _
                            UserID As String, _
                            Password As String, _
                            Options As Long, _
                            adStatus As ADODB.EventStatusEnum, _
                            ByVal pConnection As ADODB.Connection)

    ' cancel the connection
    adStatus = adStatusCancel
    
End Sub

Now enter the following code in a method to test the connection:

On Error GoTo ERR_Connection:

    Set con = New Connection
    
    con.Open "DSN=BiblioDSN"
    
    con.Close
    
ERR_Connection:
    If (Err.Number = 3712) Then
        Debug.Print "Connection canceled."
    End If
    
    Set con = Nothing

Output from this code produces the message Connection canceled. Of course, you would not logically deny every connection attempt made by an application, but you might deny Connections if you know that you already have many connections made to the same data source.

Get ADO: ActiveX Data Objects now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.