ADO WillMove and MoveComplete Events

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

ADO WillMove and MoveComplete Events

The WillMove Event

The WillMove event is triggered before an operation changes the current position in 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 notications.

The MoveComplete Event

The MoveComplete event is triggered after the current position in the Recordset has changed.

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

Note: The WillMove event or MoveComplete event may occur when calling one of  the following Recordset method: Open, Move, MoveFirst, MoveLast, MoveNext, MovePrevious, AddNew, and Requery. These events may also occur because of the following properties: Filter, Index, Bookmark, AbsolutePage, and AbsolutePosition.

Syntax

WillMove reason,status,objRs
MoveComplete reason,objErr,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
objErr 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_WillMove(adReason As ADODB.EventReasonEnum, _
   adStatus As ADODB.EventStatusEnum, _
   ByVal pRecordset As ADODB.Recordset)


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

OR,

Private Sub objRecSet_MoveComplete(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
adRsnMove 10 An operation moved the record pointer within the Recordset
adRsnMoveFirst 12 An operation moved the record pointer to the first record in the Recordset
adRsnMoveNext 13 An operation moved the record pointer to the next record in the Recordset
adRsnMovePrevious 14 An operation moved the record pointer to the previous record in the Recordset
adRsnMoveLast 15 An operation moved the record pointer to the last record 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