Параметры события

Каждый обработчик событий имеет параметр состояния, который управляет обработчиком событий. Для событий Complete этот параметр также используется для указания успеха или сбоя операции, создающей событие. Большинство событий Complete также имеет параметр ошибки для предоставления сведений о любой ошибке, которая могла возникнуть, и один или несколько параметров объекта, ссылающихся на объекты ADO, используемые для выполнения операции. Например, событие ExecuteComplete включает параметры объекта для объектов Command, Recordset и Подключение ion, связанных с событием. В следующем примере Visual Basic отображаются объекты pCommand, pRecordset и p Подключение ion, представляющие объекты Command, Recordset и Подключение ion, используемые методом Execute.

Private Sub connEvent_ExecuteComplete(ByVal RecordsAffected As Long, _  
     ByVal pError As ADODB.Error, _  
     adStatus As ADODB.EventStatusEnum, _  
     ByVal pCommand As ADODB.Command, _  
     ByVal pRecordset As ADODB.Recordset, _  
     ByVal pConnection As ADODB.Connection)  

За исключением объекта Error, те же параметры передаются событиям Will. Это позволяет изучить каждый из объектов, которые будут использоваться в ожидающей операции, и определить, следует ли завершить операцию.

Некоторые обработчики событий имеют параметр Reason , который предоставляет дополнительные сведения о том, почему произошло событие. Например, события WillMove и MoveComplete могут возникать из-за любого из методов навигации (MoveNext, MovePrevious и т. д.), вызываемых или в результате запроса.

Параметр состояния

При вызове подпрограммы обработчика событий параметр status имеет одно из следующих значений.

значение Описание
adStatusOK Переданы как события Will, так и Complete. Это значение означает, что операция, вызвавшей успешное завершение события.
adStatusErrorsOccurred Передано только в события Завершения. Это значение означает, что операция, которая вызвала неудачное событие, или событие Will отменило операцию. Дополнительные сведения см. в параметре error .
adStatusCantDeny Передано только событиям Will. Это значение означает, что операция не может быть отменена событием Will. Его необходимо выполнить.

Если вы определите, что операция должна продолжаться, оставьте параметр status без изменений. Если для параметра входящего состояния не задано значение adStatusCantDeny, можно отменить ожидающую операцию, изменив состояниена adStatusCancel. При этом событие Complete, связанное с операцией, имеет параметр состояниядля adStatusErrorsOccurred. Объект Error , переданный в событие Complete, будет содержать значение adErrOperationCancelled.

Если вы больше не хотите обработать событие, вы можете задать для adStatusUnwantedEvent значение StatususUnwantedEvent, и приложение больше не получит уведомление об этом событии. Однако помните, что некоторые события могут быть вызваны несколькими причинами. В этом случае необходимо указать adStatusUnwantedEvent для каждой возможной причины. Например, чтобы прекратить получение уведомлений о ожидающих событиях RecordChange, необходимо задать параметр Status для adStatusUnwantedEvent для adRsnAddNew, adRsnDelete, adRsnUpdate, adRsnUndoUpdate, adRsnUndoAddNew, adRsnUndoDelete и adRsnFirstChange по мере их возникновения.

значение Описание
adStatusUnwantedEvent Запросите, чтобы этот обработчик событий не получал дополнительных уведомлений.
adStatusCancel Запрос на отмену операции, которая будет выполнена.

Параметр ошибки

Параметр Error — это ссылка на объект ADO Error. Если для параметра Status задано значение adStatusErrorsOccurred, объект Error содержит сведения о том, почему операция завершилась ошибкой. Если событие Will, связанное с событием Complete, отменило операцию, задав параметр Status для adStatusCancel, объект ошибки всегда устанавливается как adErrOperationCancelled.

Параметр объекта

Каждое событие получает один или несколько объектов, представляющих объекты, участвующие в операции. Например, событие ExecuteComplete получает объект Command, объект Recordset и объект Подключение ion.

Параметр причины

Параметр Reason, adReason, предоставляет дополнительные сведения о том, почему произошло событие. События с параметром adReason могут вызываться несколько раз, даже для одной операции, по другой причине каждый раз. Например, обработчик событий WillChangeRecord вызывается для операций, которые собираются выполнять или отменять вставку, удаление или изменение записи. Если вы хотите обработать событие только в том случае, если это происходит по определенной причине, можно использовать параметр adReason , чтобы отфильтровать вхождения, которые вам не нужны. Например, если вы хотите обработать события изменения записи только в том случае, если они происходят из-за добавления записи, можно использовать следующее.

' BeginEventExampleVB01  
Private Sub rsTest_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)  
   If adReason = adRsnAddNew Then  
       ' Process event  
       '...  
   Else  
       ' Cancel event notification for all  
       ' other possible adReason values.  
       adStatus = adStatusUnwantedEvent  
   End If  
End Sub  
' EndEventExampleVB01  

В этом случае уведомление может произойти по каждой из других причин. Однако это будет происходить только один раз по каждой причине. После того как уведомление произошло один раз по каждой причине, вы получите уведомление только для добавления новой записи.

В отличие от этого, необходимо задать adStatus для adStatusUnwantedEvent только один раз, чтобы запросить, чтобы обработчик событий без параметра adReason переставал получать уведомления о событиях.

См. также

Общие сведения об обработчике событий ADO
Создание экземпляра события ADO на различных языках
Совместная работа обработчиков событий
Типы событий