ADO WillExecute 和 ExecuteComplete 事件


❮ 完整的 Connection 连接对象参考

事件是某个具体的操作发生后被自动调用的子例程。

  • WillExecute 事件在调用 objcomm.Execute, objconn.Execute 或者 objrs.Open 之前会被触发
  • ExecuteComplete 事件会在完成对 objcomm.Execute, objconn.Execute, objrs.Open, objrs.Requery 或 objrs.NextRecordset 的调用之后被触发

语法

WillExecute src,cursortyp,locktyp,options,
status,objcomm,objrs,objconn

ExecuteComplete recaffected,objerror,status,
objcomm,objrs,objconn

参数 描述
src 字符串,包含 SQL 命令或存储过程名称。
cursortyp 规定要使用的游标类型。CursorTypeEnum 值之一。
locktyp 规定要使用的锁定类型。 LockTypeEnum 值之一。
options 一个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值
recaffected Long 值,该命令影响的记录的数目。
objerror 包含已发生的错误的 Error 对象。

注释: EventStatusEnum 值必须被设置为 adStatusErrorsOccurred,以创建该 Error 对象。

status 一个 EventStatusEnum 值。
objcomm 对于 WillExecute:如果此事件由 Command.Execute 引发,objcomm 参数将引用 Command 对象,objrs 参数将设置为 Nothing。

对于 ExecuteComplete:被执行的 Command 对象。

objrs 对于 WillExecute:如果此事件由 Recordset.Open 引发,objrs 参数将引用 Recordset 对象,pCommand 参数将设置为 Nothing。

对于 ExecuteComplete:Recordset 对象,是命令执行的结果。

objconn 与命令执行相关联的 Connection 对象。

CursorTypeEnum 值

指定 Recordset 对象中使用的游标类型。

常量 值 描述
adOpenUnspecified -1 不指定游标的类型。
adOpenForwardOnly 0 默认。使用只进游标。与静态游标相同,只是您只能向前滚动记录。当您只需要通过一个 Recordset 时,这会提高性能。
adOpenKeyset 1 使用键集游标。与动态游标类似,只是您看不到其他用户添加的记录,尽管其他用户删除的记录无法从您的 Recordset 中访问。其他用户的数据更改仍然可见。
adOpenDynamic 2 使用动态游标。其他用户的添加、更改和删除都是可见的,并且允许通过 Recordset 进行所有类型的移动,但书签除外,如果提供者不支持它们。
adOpenStatic 3 使用静态游标。一组记录的静态副本,可用于查找数据或生成报告。其他用户的添加、更改或删除不可见。

LockTypeEnum 值

常量 值 描述
adLockUnspecified -1 不指定锁的类型。 对于克隆,创建的克隆使用与原始相同的锁类型。
adLockReadOnly 1 表示只读记录。 您不能更改数据。
adLock悲观 2 表示悲观锁定,逐条记录。 提供者会采取必要措施来确保成功编辑记录,通常是在编辑后立即锁定数据源中的记录。
adLockOptimistic 3 表示乐观锁定,逐条记录。 提供者使用乐观锁定,仅在您调用 Update 方法时锁定记录。
adLockBatchOptimistic 4 表示乐观的批量更新。 批量更新模式需要。

CommandTypeEnum 值

常量 值 描述
adCmdUnspecified -1 不指定命令类型参数。
adCmdText 1 将 CommandText 评估为命令或存储过程调用的文本定义。
adCmdTable 2 将 CommandText 计算为一个表名,其列全部由内部生成的 SQL 查询返回。
adCmdStoredProc 4 将 CommandText 计算为存储过程名称。
adCmdUnknown 8 表示CommandText属性中的命令类型未知。
adCmdFile 256 将 CommandText 计算为持久存储的 Recordset 的文件名。仅与 Recordset 一起使用。打开或重新查询。
adCmdTableDirect 512 将 CommandText 计算为一个表名,其列全部返回。仅与 Recordset.Open 或 Requery 一起使用。要使用 Seek 方法,必须使用 adCmdTableDirect 打开 Recordset。此值不能与 ExecuteOptionEnum 值 adAsyncExecute 组合。

ExecuteOptionEnum 值

常量 值 描述
adOptionUnspecified -1 表示命令未指定。
adAsyncExecute 16 表示命令应该异步执行。此值不能与 CommandTypeEnum 值 adCmdTableDirect 组合。
adAsyncFetch 32 表示在 CacheSize 属性中指定的初始数量之后的剩余行应该异步检索。
adAsyncFetchNonBlocking 64 表示主线程在检索时从不阻塞。如果尚未检索到请求的行,则当前行自动移至文件末尾。如果您从包含持久存储的 Recordset 的 Stream 打开 Recordset,adAsyncFetchNonBlocking 将不起作用;该操作将是同步和阻塞的。当使用 adCmdTableDirect 选项打开 Recordset 时,adAsynchFetchNonBlocking 无效。
adExecuteNoRecords 128 表示命令文本是不返回行的命令或存储过程(例如,只插入数据的命令)。如果检索到任何行,它们将被丢弃且不返回。 adExecuteNoRecords 只能作为可选参数传递给 Command 或 Connection Execute 方法。
adExecuteStream 256 表示命令执行的结果应该作为流返回。 adExecuteStream 只能作为可选参数传递给 Command Execute 方法。
adExecuteRecord 512 表明 CommandText 是一个命令或存储过程,它返回应作为 Record 对象返回的单行。

EventStatusEnum 值

常量 值 描述
adStatusOK 1 引发该事件的操作成功。
adStatusErrorsOccurred 2 引发该事件的操作失败。
adStatusCantDeny 3 不能取消挂起操作。
adStatusCancel 4 取消导致事件发生的操作。
adStatusUnwantedEvent 5 在事件方法执行结束之前禁止后续的通知。

❮ 完整的 Connection 连接对象参考