Мир объектов Excel 2000


События объекта Connection


Только два объекта ADO обладают событиями - Connection и Recordset. События связываются с выполнением той или иной операции и могут возникать перед выполнением и после завершения операции. При возникновении события операционной системе посылается уведомление, а она, в свою очередь, вызывает соответствующую процедуру обработки этого события. Конечно, программист должен определить эту процедуру в соответствующем месте проекта. Обработка событий, предшествующих выполнению операции, позволяет проверить правильность задания всех параметров и принять окончательное решение о запуске команды на выполнение или на ее прерывание. Обработка событий после завершения операции особенно важна при асинхронном способе выполнения команд, когда выполнение операций над данными выполняется параллельно с выполнением кода программного проекта. В этом случае необходимо получать уведомление о завершении очередной команды и выполнять в обработчике события определенные действия.

У объекта Connection достаточно много событий - 9, большая часть из которых возникает по завершении той или иной команды. Давайте рассмотрим эти события:

  • Event WillConnect(ConnectionString As String, UserID As String, Password As String, Options As Long, adStatus As EventStatusEnum, pConnection As Connection),
  • Event WillExecute(Source As String, CursorType As CursorTypeEnum, LockType As LockTypeEnum, Options As Long, adStatus As EventStatusEnum, pCommand As Command, pRecordset As Recordset, pConnection As Connection). Первое из этих событий будет возникать перед выполнением соединения, второе - перед выполнением команды Execute или Open. Параметры pConnection, pCommand, pRecordset возвращают указатели на соответствующие объекты, а остальные параметры задают те или иные характеристики соединения или команды, которую предстоит выполнить. Как я уже говорил, в обработчике события можно проверить корректность задания параметров.
  • Event BeginTransComplete(TransactionLevel As Long, pError As Error, adStatus As EventStatusEnum, pConnection As Connection),
  • Event CommitTransComplete(pError As Error, adStatus As EventStatusEnum, pConnection As Connection),
  • Event RollbackTransComplete(pError As Error, adStatus As EventStatusEnum, pConnection As Connection).
  • Event ConnectComplete(pError As Error, adStatus As EventStatusEnum, pConnection As Connection),
  • Event Disconnect(adStatus As EventStatusEnum, pConnection As Connection),
  • Event ExecuteComplete(RecordsAffected As Long, pError As Error, adStatus As EventStatusEnum, pCommand As Command, pRecordset As Recordset, pConnection As Connection), Шесть событий этой группы возникают после завершения операций Connection, Execute или операций, связанных с транзакциями. Событие ConnectComplete возникает после того, как было открыто соединение, событие Disconnect - после закрытия соединения. Во всех случаях обработчику событий передаются указатели на соответствующие объекты и информация, необходимая, для того чтобы оценить, насколько корректно была выполнена та или иная операция. Если значение параметра adStatus равно adStatusOk, то операция окончилась успешно, и нет необходимости анализировать объект Error. Если же этот параметр имеет значение adStatusErrorsOccured, то необходимо анализировать объект Error, а, возможно, и всю коллекцию Errors.
  • Event InfoMessage(pError As Error, adStatus As EventStatusEnum, pConnection As Connection). В отличие от остальных это событие встречается не до и не после выполнения операции соединения, а в момент ее выполнения, и выдает предупреждение о возможных ошибках. Параметры, передаваемые обработчику события, имеют привычный смысл.



Содержание раздела