Open 方法 (ADO Recordset)

Recordset 物件上開啟資料指標。

語法

  
recordset.Open Source, ActiveConnection, CursorType, LockType, Options  

參數

來源
選擇性。 評估為有效 Command 物件、SQL 陳述式、資料表名稱、預存程序呼叫、URL,或是檔案名稱或 Stream 物件 (包含永久儲存的 Recordset) 的 Variant

ActiveConnection
選擇性。 評估為有效 Connection 物件變數名稱的 Variant,或是包含 ConnectionString 參數的 String

CursorType
選擇性。 CursorTypeEnum 值,決定提供者在開啟 Recordset 時,所應該使用的資料指標類型。 預設值為 adOpenForwardOnly

LockType
選擇性。 LockTypeEnum 值,決定開啟 Recordset 時,提供者應該使用何種類型的鎖定 (並行)。 預設值為 adLockReadOnly

選項
選擇性。 Long 值,指出如果引數代表 Command 物件以外的項目,提供者應該如何評估 Source 引數,或是 Recordset 應該從先前儲存的檔案還原。 可以是一或多個 CommandTypeEnumExecuteOptionEnum 值,可以與位 OR 運算子結合。

注意

如果您從包含保存 RecordsetStream 開啟 Recordset,則使用 adAsyncFetchNonBlockingExecuteOptionEnum 值將不會有任何作用;擷取將會同步並且封鎖。

注意

adExecuteNoRecordsadExecuteStreamExecuteOpenEnum 值不應與 Open 搭配使用。

備註

ADO Recordset 的預設資料指標是位於伺服器上的順向唯讀資料指標。

Recordset 物件上使用Open 方法會開啟資料指標,其代表基底資料表、查詢結果或先前所儲存的 Recordset 記錄。

使用選擇性 Source 引數,並利用下列其中一項來指定資料來源:Command 物件變數、SQL 陳述式、預存程序、資料表名稱、URL 或完整檔案路徑名稱。 如果 Source 是檔案路徑名稱,則其可為完整路徑 ("c:\dir\file.rst")、相對路徑 ("..\file.rst") 或 URL (https://files/file.rst)。

不建議使用 Open 方法的 Source 引數來執行不會傳回記錄的動作查詢,因為沒有簡單的方法可判斷呼叫是否成功。 將會關閉這類查詢所傳回的 Recordset。 若要執行不會傳回記錄的查詢,例如 SQL INSERT 陳述式,請改為呼叫 Command 物件的 Execute 方法或 Connection 物件的 Execute 方法。

ActiveConnection 引數會對應至 ActiveConnection 屬性,並指定要開啟 Recordset 物件的連線。 如果您傳遞這個引數的連線定義,ADO 便會使用指定參數開啟新的連線。 將 CursorLocation 屬性設定為 adUseClient 以使用用戶端資料指標開啟 Recordset 後,您可以變更此屬性的值,以將更新傳送給另一個提供者。 或者,您可以將此屬性設定為 Nothing (在 Microsoft Visual Basic 中),或設定為 Null 以中斷 Recordset 與任何提供者的連線。 不過,變更伺服器端資料指標的 ActiveConnection 會產生錯誤。

針對直接對應至 Recordset 物件 (SourceCursorTypeLockType) 屬性的其他引數,引數與屬性的關聯性如下所示:

  • 屬性會在開啟 Recordset 物件之前讀取/寫入。

  • 除非您在執行 Open 方法時傳遞對應的引數,否則會使用屬性設定。 如果您傳遞引數,其會覆寫對應的屬性設定,並使用引數值更新屬性設定。

  • 開啟 Recordset 物件之後,這些屬性會變成唯讀。

注意

Recordset 物件的 ActiveConnection 屬性為唯讀,該物件的 Source 屬性會設定為有效的 Command 物件,即使是 Recordset 屬性未開啟亦然。

如果您在 Source 引數中傳遞 Command 物件,同時傳遞 ActiveConnection 引數,就會發生錯誤。 Command 物件的 ActiveConnection 屬性必須已經設定為有效的 Connection 物件或連接字串。

如果您在 Source 引數中傳遞 Command 物件以外的項目,您可以使用 Options 引數來最佳化 Source 引數的評估。 如果未定義 Options 引數,您可能會遇到效能降低的情況,因為 ADO 必須呼叫提供者,以判斷引數為 SQL 陳述式、預存程序、URL 還是資料表名稱。 如果您知道所使用的 Source 類型,則設定 Options 引數會指示 ADO 直接跳到相關的程式碼。 如果 Options 引數不符合 Source 類型,就會發生錯誤。

如果您在 Source 引數中傳遞 Stream 物件,就不應該將資訊傳遞至其他引數。 這樣會產生錯誤。 從 Stream 開啟 Recordset 時,不會保留 ActiveConnection 資訊。

如果沒有任何連線與 Recordset 相關聯,Options 引數的預設值即為 adCmdFile。 這通常是永久儲存的 Recordset 物件的情況。

如果資料來源未傳回任何記錄,提供者會將 BOFEOF 屬性設定為 True,且目前記錄位置未定義。 如果資料指標類型允許,您仍可以將新的資料新增至這個空的 Recordset 物件。

當您結束對開啟 Recordset 物件的作業時,請使用 Close 方法來釋放任何相關聯的系統資源。 關閉物件並不會將物件從記憶體中移除;您可以變更其屬性設定,並使用 Open 方法來稍後再次將其開啟。 若要完全將物件從記憶體中排除,請將物件變數設定為 Nothing

設定 ActiveConnection 屬性之前,請呼叫 Open 而不使用運算元來建立 Recordset 的執行個體,其建立方法是將欄位附加至 RecordsetFields 集合。

如果您已將 CursorLocation 屬性設定為 adUseClient,則可以利用兩種方式之一,以非同步方式擷取資料列。 建議的方法是將 Options 設定為 adAsyncFetch。 或者,您可以在 Properties 集合中使用「非同步資料列集處理」動態屬性,但如果您未將 Options 參數設定為 adAsyncFetch,則相關的擷取事件可能會遺失。

注意

只有透過 Open 方法的 Options 參數,才支援在 MS 遠端提供者中擷取背景。

注意

使用 HTTP 配置的 URL 會自動叫用 Microsoft OLE DB Provider for Internet Publishing。 如需詳細資訊,請參閱絕對和相對 URL

CommandTypeEnumExecuteOptionEnum 值的某些組合無效。 如需哪些選項無法合併的相關資訊,請參閱 ExecuteOptionEnumCommandTypeEnum 的主題。

套用至

Recordset 物件 (ADO)

另請參閱

Open 和 Close 方法範例 (VB)
Open 和 Close 方法範例 (VBScript)
Open 和 Close 方法範例 (VC++)
Save 和 Open 方法範例 (VB)
Open 方法 (ADO Connection)
Open 方法 (ADO Record)
Open 方法 (ADO Stream)
OpenSchema 方法
Save 方法