ADO 事件總結
ADO 2.0 支持事件,事件是對某些操作將要或已經發生的通知。
有兩類事件:ConnectionEvent 和 RecordsetEvent。Connection 對象產生ConnectionEvent 事件,而 Recordset 對象則產生 RecordsetEvent 事件。
事件由事件處理程序例程處理,該例程在某個操作開始之前或結束之后被調用。
某些事件是成對出現的。開始操作前調用的事件名格式為 WillEvent(Will 事件),而操作結束后調用的事件名格式為 EventComplete(Complete 事件)。
其余的不成對事件只在操作結束后發生。(其名稱沒有任何固定模式。)事件處理程序由狀態參數控制。附加信息由錯誤和對象參數提供。
可以請求事件處理程序不接受第一次通知以后的任何通知。例如,可以選擇只接收Will 事件或 Complete 事件。
在某種編程語言中,來自多個 ADO 對象的事件可以由一個事件處理程序處理。一個事件也可以用多個事件處理程序處理,但不太常見。
ADO 事件
ADO 2.0 支持事件。事件是由某些操作在開始之前或結束之后發出的通知。事件實際上是對應用程序中定義的事件處理程序例程的調用。請參閱 不同語言的 ADO 事件實例。
事件分成兩類。ConnectionEvent 類從屬于 Connection 對象的操作,而 RecordsetEvent類則從屬于 Recordset 對象的操作。 ConnectionEvents — 在連接的事務開始、提交或回卷時,或在 Command 被執行、連接開始或結束時,事件即被引發。
RecordsetEvents — 在 Recordset 對象行中定位、更改 Recordset 行中的字段、更改Recordset 的行、或是在 Recordset 作任何修改時,事件即被引發。
ADO 事件處理程序概述
ConnectionEvent 說明
BeginTransComplete、CommitTransComplete、RollbackTransComplete 事務管理 — 關于連接上的當前事務已經開始、已經提交、或者已經回卷的通知。
WillConnect、ConnectComplete、Disconnect 連接管理 — 關于當前連接即將開始、已經開始、或者已經結束的通知。
WillExecute、ExecuteComplete 命令執行管理 — 關于連接的當前命令的執行即將開始、或者已經結束的通知。
InfoMessage Informational — 關于當前操作有附加信息的通知。
RecordsetEvent 說明
FetchProgress、FetchComplete 檢索狀態 — 關于數據檢索操作進度、或者檢索操作已經結束的通知。
WillChangeField、FieldChangeComplete 字段更改管理 — 關于當前字段值即將更改、或者已經更改的通知。
WillMove、MoveComplete、EndOfRecordset 定位管理 — 關于當前行在 Recordset 中的位置即將更改、已經更改、或者已經到達 Recordset 結尾的通知。
WillChangeRecord、RecordChangeComplete 行更改管理 — 關于 Recordset 當前行的某些地方即將更改、或者已經更改的通知。
WillChangeRecordset、RecordsetChangeComplete Recordset 更改管理 — 關于當前 Recordset的某些地方即將更改、或者已經更改的通知。
事件類型
Will 事件
操作開始之前調用的事件處理程序使您有機會檢查或修改操作參數,然后取消操作或允許完成該操作。這些事件處理程序例程通常具有形如 WillEvent(Will 事件)的名稱。
Complete 事件
操作完成之后調用的事件處理程序將向應用程序發出操作已經結束的通知。當掛起的操作被 Will事件處理程序取消時,該事件處理程序也會收到通知。這些事件處理程序例程通常具有如象EventComplete(Complete 事件)的名稱。
Will 和 Complete 事件一般成對使用。
其他事件
其他事件處理程序(事件名不使用 WillEvent 或 EventComplete 格式)僅在操作完成后被調用。
事件參數
每個事件處理程序都有一個控制它的狀態參數。大部分 Complete 事件都有錯誤參數,用于報告引起事件發生的操作是否成功。另外還有一個對象參數,用于標識操作所執行的 ADO 對象。
Will 事件也傳遞用于掛起操作的參數。這樣您就有機會檢查參數并確定操作是否應該完成。
狀態參數
當事件處理程序例程被調用時,狀態參數將被設置為下列信息值之一。
原文轉自:http://www.anti-gravitydesign.com