Istanziazione di eventi ADO: Visual Basic
Per gestire gli eventi ADO in Visual Basic, è necessario dichiarare una variabile a livello di modulo usando la parola chiave WithEvents. La variabile può essere dichiarata solo come parte di un modulo di classe e deve essere dichiarata a livello di modulo. Ciò non è così restrittivo come sembra, tuttavia, perché anche gli oggetti form di Visual Basic Form sono classi. Il modo più semplice per gestire gli eventi ADO consiste nel dichiarare una variabile usando WithEvents. Nell'esempio seguente viene gestito l'evento ConnectComplete per un oggetto Connection:
' 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
L'oggetto Connection viene dichiarato a livello di form usando la parola chiave WithEvents di per abilitare la gestione degli eventi. Il gestore eventi Form_Load crea effettivamente l'oggetto assegnando un nuovo oggetto Connection a connEvent e quindi apre la connessione. Naturalmente, un'applicazione reale eseguirà più elaborazione nel gestore eventi Form_Load di quanto illustrato di seguito.