Visual Basic
Se aplica a: Access 2013, Office 2013
Para controlar eventos de ADO en Microsoft Visual Basic, se debe declarar una variable de nivel de módulo mediante la palabra clave WithEvents. La variable se puede declarar sólo como parte de un módulo de clase y se debe declarar en el nivel de módulo. No obstante, esto no es tan restrictivo como parece, ya que los objetos Form de Visual Basic también son clases. La forma más sencilla de controlar eventos de ADO es declarar una variable mediante WithEvents. En el ejemplo siguiente, se controla el evento ConnectComplete para un objeto Connection:
' BeginEventExampleVB02
Dim WithEvents connEvent As Connection
Attribute connEvent.VB_VarHelpID = -1
Dim strMsg As String
Private Sub Form_Load()
On Error GoTo ErrHandler:
Dim strConn As String
' Create a new object with event
' handling enabled.
strConn = "Provider='sqloledb';" & _
"Data Source='MySqlServer';" & _
"Initial Catalog='Northwind';" & _
"Integrated Security='SSPI';"
Set connEvent = New ADODB.Connection
connEvent.Open strConn
Exit Sub
ErrHandler:
MsgBox strMsg
End Sub
Private Sub connEvent_ConnectComplete(ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)
If adStatus = adStatusErrorsOccurred Then
If Not pError Is Nothing 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
Else
strMsg = "Error occured. Click OK to exit."
Unload Me
End If
End If
'frmWait.btnOK.Enabled = True
End Sub
' EndEventExampleVB02
El objeto Connection se declara en el nivel de formulario mediante la palabra clave WithEvents para permitir el control de eventos. En realidad, el controlador de eventos Form_Load crea el objeto asignando un nuevo objeto Connection a connEvent y, a continuación, abre la conexión. Por supuesto, una aplicación real realizará más procesamiento en el controlador de eventos Form_Load que lo que se muestra aquí.