Open 方法 (ADO Recordset)

Recordset 物件上開啟資料指標。

語法

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

參數

來源
選擇性。 評估為有效Command物件、SQL 語句、資料表名稱、預存程序呼叫、URL 或包含永續儲存之 Recordset之檔案或Stream物件名稱的Variant

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

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

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

選項
選擇性。 Long值,指出如果提供者代表Command物件以外的專案,或Recordset應該從先前儲存的檔案還原,提供者應該如何評估Source引數。 可以是一或多個 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後,您可以變更此屬性的值,以將更新傳送給另一個提供者。 或者,您可以將此屬性設定為 Microsoft Visual Basic) 或 Null 中的 Nothing (,以中斷 Recordset 與任何提供者的連線。 不過,變更伺服器端資料指標的 ActiveConnection 會產生錯誤。

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

  • 開啟 Recordset 物件之前,屬性是可讀寫的。

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

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

注意

ActiveConnection屬性是Recordset物件的唯讀屬性,其Source屬性設定為有效的Command物件,即使Recordset物件未開啟也一樣。

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

如果您在Source引數中傳遞Command物件以外的專案,您可以使用Options引數來優化Source引數的評估。 如果未定義 Options 引數,您可能會遇到效能降低的情況,因為 ADO 必須呼叫提供者,以判斷引數是否為 SQL 語句、預存程式、URL 或資料表名稱。 如果您知道所使用的 來源 類型,設定 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 方法