ADO WillChangeRecordset and RecordsetChangeComplete Events

Home | About me | EXCEL VB Programming (XL97-2003) | ACCESS Programming | EXCEL VB.Net Programming | EXCEL Spreadsheet Functions Material Management  |  Guestbook
 

ADO WillChangeRecordset and RecordsetChangeComplete Events

The WillChangeRecordset Event

The WillChangeRecordset event is triggered before an operation changes the Recordset.

Note: Before this event returns, set the status parameter to adStatusCancel to cancel the operation that caused this event or set it to adStatusUnwantedEvent to prevent subsequent notifications.

The RecordsetChangeComplete Event

The RecordsetChangeComplete event is triggered after a Recordset has changed.

Note: Before this event returns, set the status parameter to adStatusUnwantedEvent to prevent subsequent notifications.

Note: The WillChangeRecordset and the RecordsetChangeComplete event can occur when calling the Requery method or the Open method of a Recordset object.

Syntax

WillChangeRecord reason,status,objRs
RecordsetChangeComplete reason,objErrOR,status,objRs

 
Parameter

Description

reason An EventReasonEnum value that specifies the reason for this event
status An EventStatusEnum value that indicates the status of the execution of the event
objError The name of an Error object that describes the error if status is set to adStatusErrorsOccurred, otherwise it is not set
objRs The name of the Recordset object that triggered this event

Example


'use the WithEvents keyword to designate that events
'can be handled by this Recordset object
Dim WithEvents objRecSet As ADODB.Recordset

'Note how the object name, objRecSet, is incorporated into the event Sub name
Private Sub objRecSet_WillChangeRecordset(adReason As ADODB.EventReasonEnum, _
   adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)


'place any code you desire here, for example
If adReason = adRsnResynch Then
   adStatus = adStatusCancel
End If
End Sub

OR,



Private Sub objRecSet_RecordsetChangeComplete(adReason As ADODB.EventReasonEnum, _
   ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, _
   ByVal pRecordset As ADODB.Recordset )


' place any code you desire here, for example
If adStatus = adStatusErrorsOccurred Then
   Dim objError As ADODB.Error
   For Each objError in pRecordset.Errors
      Debug.Print vbtab; objError.Description
   Next
End If
End Sub

 

 

EventReasonEnum Values

Constant Value

Description

adRsnRequery 7 An operation requeried the Recordset
adRsnResynch 8 An operation resynchronized the Recordset with the database
adRsnClose 9 An operation closed the Recordset
adRsnMove 2 The record pointer has been moved in the Recordset

 

EventStatusEnum Values

Constant Value

Description

adStatusOK 1 The operation that caused the event was successful
adStatusErrorsOccurred 2 The operation that caused the event failed
adStatusCantDeny 3 The operation that caused the event cannot be cancelled
adStatusCancel 4 The operation that caused the event is cancelled
adStatusUnwantedEvent 5 Prevents subsequent notifications before the event method has finished executing