Recordset 物件 (ADO)
代表基表或執行命令結果的整個記錄集。 隨時,Recordset 物件只會參考集合內的單一記錄做為當前記錄。
言論
您可以使用 Recordset 物件來操作提供者的數據。 當您使用 ADO 時,幾乎完全使用 Recordset 物件來操作數據。 所有 Recordset 物件都包含記錄(數據列)和字段(數據行)。 根據提供者所支援的功能,某些 Recordset 方法或屬性可能無法使用。
ADODB。Recordset 是 ProgID,應該用來建立 Recordset 物件。 參考過期 ADOR 的現有應用程式。Recordset ProgID 會繼續運作,而不需重新編譯,但新的開發應該參考 ADODB。Recordset。
ADO 中定義了四種不同的資料指標類型:
動態數據指標 可讓您檢視其他使用者的新增、變更和刪除;允許透過不依賴書籤的 Recordset 進行所有類型的移動;如果提供者支援書籤,則允許書籤。
索引鍵集數據指標 行為就像動態數據指標,不同之處在於它可防止您看到其他使用者新增的記錄,並防止存取其他使用者刪除的記錄。 其他用戶的數據變更仍會顯示。 它一律支援書籤,因此允許透過 Recordset所有類型的移動。
靜態數據指標 提供一組記錄的靜態複本,讓您用來尋找數據或產生報表;一律允許書籤,因此允許透過 Recordset所有類型的移動。 其他使用者不會顯示新增、變更或刪除。 這是當您開啟用戶端 Recordset 物件時,唯一允許的數據指標類型。
僅向前資料指標 可讓您只向前捲動 Recordset。 其他使用者不會顯示新增、變更或刪除。 這可改善在只需要透過 Recordset進行單一傳遞的情況下,改善效能。
在開啟 Recordset 以選擇數據指標類型之前,先設定 CursorType 屬性,或使用 Open 方法傳遞 CursorType 自變數。 某些提供者不支援所有數據指標類型。 檢查提供者的檔。 如果您未指定數據指標類型,則 ADO 預設會開啟僅轉寄數據指標。
如果 CursorLocation 屬性設定為 adUseClient 開啟 Recordset,則 Field 物件上的 UnderlyingValue 屬性無法在 傳回的 Recordset 物件中使用。 與某些提供者搭配使用時(例如搭配 Microsoft SQL Server 使用 Microsoft ODBC Provider for OLE DB),您可以藉由使用 open Open 方法傳遞連接字符串,以建立與先前定義的 Connection 對象無關的 Recordset 物件。 ADO 仍然會建立 Connection 物件,但不會將該物件指派給物件變數。 不過,如果您要透過相同連接開啟多個 Recordset 物件,您應該明確地建立並開啟 Connection 物件;這會將 Connection 物件指派給物件變數。 如果您在開啟 Recordset 物件時不使用這個物件變數,則即使您傳遞相同的連接字串,ADO 也會為每個新的 Recordset建立新的 Connection 物件。
您可以視需要建立多達 Recordset 物件。
當您開啟 Recordset時,目前的記錄會放置在第一筆記錄中(如果有的話),而 BOF 和 EOF 屬性會設定為 false 。 如果沒有記錄,BOF 和 EOF 屬性設定會 True。
您可以使用 MoveFirst、MoveLast、MoveNext和 MovePrevious 方法:Move 方法;和 AbsolutePosition、AbsolutePage,以及 Filter 屬性來重新定位當前記錄,假設提供者支持相關的功能。 正向 Recordset 物件僅支援 moveNext 方法。 當您使用 Move 方法來流覽每個記錄時(或列舉 Recordset),您可以使用 BOF 和 EOF 属性來判斷您是否已超出 Recordset的開頭或結尾。
在使用 Recordset 物件的任何功能之前,您必須呼叫 物件上的 Supports 方法,以確認支援或可使用此功能。 當 Supports 方法傳回 false 時,您不得使用此功能。 例如,只有當 Recordset.Supports(adMovePrevious)
傳回 true 時,才可以使用 MovePrevious 方法。 否則,您會收到錯誤,因為 Recordset 物件可能已經關閉,而且實例上呈現的功能無法使用。 如果不支援您感興趣的功能,支援 也會傳回 false。 在此情況下,您應該避免在 Recordset 物件上呼叫對應的屬性或方法。
Recordset 物件可以支援兩種類型的更新:立即和批次。 在立即更新中,呼叫 Update 方法之後,所有對數據的變更都會立即寫入基礎數據源。 您也可以使用 AddNew 和 Update 方法來傳遞值陣列作為參數,同時更新記錄中的數個字段。
如果提供者支援批次更新,您可以讓提供者快取變更為多個記錄,然後使用 UpdateBatch 方法,以單一呼叫資料庫來傳輸它們。 這適用於使用 AddNew、Update和 Delete 方法所做的變更。 呼叫 UpdateBatch 方法之後,您可以使用 Status 屬性來檢查是否有任何數據衝突,以解決這些衝突。
注意
若要執行查詢而不使用 Command 物件,請將查詢字串傳遞至 Recordset 物件的 Open 方法。 不過,當您想要保存命令文字並重新執行命令,或使用查詢參數時,需要 Command 物件。
Mode 屬性會控管訪問許可權。
Fields 集合是 Recordset 物件的預設成員。 因此,下列兩個程序代碼語句相等。
Debug.Print objRs.Fields.Item(0) ' Both statements print
Debug.Print objRs(0) ' the Value of Item(0).
當 Recordset 物件跨進程傳遞時,只會封送處理 數據列集 值,並忽略 Recordset 物件的屬性。 在取消合併期間,數據列集 會解壓縮到新建立 Recordset 物件中,該物件也會將其屬性設定為預設值。
Recordset 物件是安全的腳本。
本節包含下列主題。
另請參閱
Connection 物件 (ADO)
Fields 集合 (ADO)
Properties 集合 (ADO)
附錄 A:提供者