Instanziierung von ADO-Ereignissen: Visual Basic
Um ADO-Ereignisse in Visual Basic zu behandeln, müssen Sie eine Variable auf Modulebene mithilfe des Schlüsselworts WithEvents deklarieren. Die Variable kann nur als Teil eines Klassenmoduls deklariert werden und muss auf Modulebene deklariert werden. 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 mithilfe des Schlüsselworts WithEvents auf Formularebene Ebene deklariert, um die Ereignisbehandlung zu ermöglichen. Der Form_Load-Ereignishandler erstellt das Objekt tatsächlich, indem es dem connEvent ein neues Connection-Objekt zuweist und dann die Verbindung öffnet. Natürlich würde eine echte Anwendung im Form_Load Ereignishandler mehr Verarbeitung durchführen, als hier gezeigt wird.