Поделиться через


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

Каждый обработчик событий имеет параметр состояния, который управляет обработчиком событий. Для событий Complete этот параметр также используется для указания успеха или сбоя операции, создающей событие. Большинство событий Complete также имеет параметр ошибки для предоставления сведений о любой ошибке, которая могла возникнуть, и один или несколько параметров объекта, ссылающихся на объекты ADO, используемые для выполнения операции. Например, событие ExecuteComplete включает параметры для объектов Command, Recordsetи Connection, связанных с событием. В следующем примере Visual Basic можно увидеть объекты pCommand, pRecordset и pConnection, представляющие объекты Command, Recordsetи объекты Connection, используемые методом 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 отменило операцию. Проверьте параметр ошибки для получения дополнительных сведений.
СтатусРекламыНеМожноОтказать Предназначено только для событий Will. Это значение означает, что операция не может быть отменена событием Will. Его необходимо выполнить.

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

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

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

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

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

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

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

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

Параметр ReasonadReasonпредоставляет дополнительные сведения о том, почему произошло событие. События с параметром 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-события по разным языкам
Как Обработчики Событий Работают Вместе
типы событий