ADO-Ereignisinstanziierung: Visual Basic

Um ADO-Ereignisse in Visual Basic zu behandeln, müssen Sie mithilfe des WithEvents-Schlüsselworts eine Variable auf Modulebene deklarieren. Die Variable kann nur als Teil eines Klassenmoduls deklariert werden, und die Deklaration muss auf Modulebene erfolgen. Dies ist nicht so restriktiv wie es scheint, da Visual Basic Form-Objekte auch Klassen sind. Die einfachste Möglichkeit zum Behandeln von ADO-Ereignissen besteht darin, eine Variable mithilfe von WithEvents zu deklarieren. Im folgenden Beispiel wird das ConnectComplete-Ereignis für ein Connection-Objekt behandelt:

' BeginEventExampleVB02  
Dim WithEvents connEvent As Connection  
Attribute connEvent.VB_VarHelpID = -1  
  
Private Sub Form_Load()  
Dim strConn As String  
  
   ' Create a new object with event  
   ' handling enabled.  
   strConn = "Provider=sqloledb;" & _  
      "Data Source=MyServer;" & _  
      "Initial Catalog=Northwind;" & _  
      "Integrated Security=SSPI;"  
   Set connEvent = New ADODB.Connection  
   connEvent.Open strConn  
End Sub  
  
Private Sub connEvent_ConnectComplete(ByVal pError As ADODB.Error, _  
    adStatus As ADODB.EventStatusEnum, _  
    ByVal pConnection As ADODB.Connection)  
Dim strMsg As String  
  
   If adStatus = adStatusErrorsOccurred Then  
      Select Case pError.Number  
         Case adErrOperationCancelled  
            ' The operation was cancelled in the  
            ' Will event. Notify the user and exit.  
            strMsg = "I'm sorry you can't connect right now." & vbCrLf  
            strMsg = strMsg & "Click OK to exit."  
            Unload Me  
         Case Else  
            strMsg = "Error " & Format(pError.Number) & vbCrLf  
            strMsg = strMsg & pError.Description  
            strMsg = strMsg & "Click OK to exit."  
            Unload Me  
      End Select  
   End If  
   frmWait.btnOK.Enabled = True  
End Sub  
' EndEventExampleVB02  

Das Connection-Objekt wird auf Formularebene mithilfe des WithEvents-Schlüsselworts deklariert, um die Ereignisbehandlung zu aktivieren. Der „Form_Load“-Ereignishandler erstellt das Objekt, indem connEvent ein neues Connection-Objekt zugewiesen und anschließend die Verbindung geöffnet wird. Selbstverständlich würde eine echte Anwendung eine umfangreichere Verarbeitung im „Form_Load“-Ereignishandler vornehmen als hier gezeigt.