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 值之一 |
選項 | 一個或多個 CommandTypeEnum 或 ExecuteOptionEnum 值 |
recaffected | 執行影響的記錄數 |
objerror | 一個 Error 物件,包含發生的錯誤 注意:EventStatusEnum 值必須設定為 adStatusErrorsOccurred 才能建立 Error 物件 |
status | 一個 EventStatusEnum 值 |
objcomm | 對於 WillExecute:設定為已執行的 Command 物件或 Nothing 對於 ExecuteComplete:已執行的 Command 物件 |
objrs | 對於 WillExecute:設定為執行命令產生的 Recordset 物件或 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 | 表示只讀記錄。您不能更改資料。 |
adLockPessimistic | 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.Open 或 Requery 一起使用。 |
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 物件參考