ADO WillExecuteExecuteComplete 事件


❮ 完整的 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 连接对象参考