此頁沒有內(nèi)容條目
內(nèi)容

   

打開游標(biāo)。

語法

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

參數(shù)

Source   可選,變體型,計(jì)算 Command 對(duì)象的變量名、SQL 語句、表名、存儲(chǔ)過程調(diào)用或持久 Recordset 文件名。

ActiveConnection   可選。變體型,計(jì)算有效 Connection 對(duì)象變量名;或字符串,包含 ConnectionString 參數(shù)。

CursorType   可選,CursorTypeEnum 值,確定提供者打開 Recordset 時(shí)應(yīng)該使用的游標(biāo)類型??蔀橄铝谐A恐唬▍㈤?CursorType 屬性可獲得這些設(shè)置的定義)。

常量

說明

AdOpenForwardOnly

(默認(rèn)值)打開僅向前類型游標(biāo)。

AdOpenKeyset

打開鍵集類型游標(biāo)。

AdOpenDynamic

打開動(dòng)態(tài)類型游標(biāo)。

AdOpenStatic

打開靜態(tài)類型游標(biāo)。

 

LockType   可選。確定提供者打開 Recordset 時(shí)應(yīng)該使用的鎖定(并發(fā))類型的 LockTypeEnum 值,可為下列常量之一(參見 LockType 屬性可獲得詳細(xì)信息)。

常量

說明

AdLockReadOnly

(默認(rèn)值)只讀 — 不能改變數(shù)據(jù)。

AdLockPessimistic

保守式鎖定(逐個(gè)) — 提供者完成確保成功編輯記錄所需的工作,通常通過在編輯時(shí)立即鎖定數(shù)據(jù)源的記錄。

AdLockOptimistic

開放式鎖定(逐個(gè)) — 提供者使用開放式鎖定,只在調(diào)用Update 方法時(shí)才鎖定記錄。

AdLockBatchOptimistic

開放式批更新—用于批更新模式(與立即更新模式相對(duì))。

 

Options   可選,長(zhǎng)整型值,用于指示提供者如何計(jì)算 Source 參數(shù)(如果它代表的不是 Command 對(duì)象),或從以前保存 Recordset 的文件中恢復(fù) Recordset??蔀橄铝谐A恐唬▍⒁?CommandType 屬性可獲得該列表中前五個(gè)常量的詳細(xì)說明)。

常量

說明

adCmdText

指示提供者應(yīng)該將 Source 作為命令的文本定義來計(jì)算。

adCmdTable

指示 ADO 生成 SQL 查詢以便從在 Source 中命名的表中返回所有行。

adCmdTableDirect

指示提供者更改從在 Source 中命名的表中返回所有行。

adCmdStoredProc

指示提供者應(yīng)該將 Source 視為存儲(chǔ)過程。

adCmdUnknown

指示 Source 參數(shù)中的命令類型為未知。

adCmdFile

指示應(yīng)從在 Source 中命名的文件中恢復(fù)保留(保存的)Recordset。

adAsyncExecute

指示應(yīng)異步執(zhí)行 Source。

adAsyncFetch

指示在提取 Initial Fetch Size 屬性中指定的初始數(shù)量后,應(yīng)該異步提取所有剩余的行。如果所需的行尚未提取,主要的線程將被堵塞直到行重新可用。

adAsyncFetchNonBlocking

指示主要線程在提取期間從未堵塞。如果所請(qǐng)求的行尚未提取,當(dāng)前行自動(dòng)移到文件末尾。

 

說明

使用 Recordset 對(duì)象的 Open 方法可打開代表基本表、查詢結(jié)果或者以前保存的 Recordset 中記錄的游標(biāo)。

使用可選的 Source 參數(shù)指定使用下列內(nèi)容之一的數(shù)據(jù)源:Command 對(duì)象變量、SQL 語句、存儲(chǔ)過程、表名或完整的文件路徑名。

如果 Source 是文件路徑名,它可以是完整路徑(“c:\dir\file.rst”)、相對(duì)路徑(“..\file.rst”)或 URL(“http://files/file.rst”)。

ActiveConnection 參數(shù)對(duì)應(yīng)于 ActiveConnection 屬性,并指定在哪個(gè)連接中打開 Recordset 對(duì)象。如果傳送該參數(shù)的連接定義,則 ADO 使用指定的參數(shù)打開新連接??梢栽诖蜷_ Recordset 之后更改該屬性的值以便將更新發(fā)送到其他提供者?;蛘呖梢詫⒃搶傩栽O(shè)置為 Nothing(在 Microsoft Visual Basic 中)以便將 Recordset 與所有提供者斷開。

對(duì)于直接對(duì)應(yīng)于 Recordset 對(duì)象屬性的參數(shù)(Source、CursorTypeLockType),參數(shù)和屬性的關(guān)系如下:

? Recordset 對(duì)象打開之前屬性是讀/寫。

 

?除非在執(zhí)行 Open 方法時(shí)傳送相應(yīng)的參數(shù),否則將使用屬性設(shè)置。如果傳送參數(shù),則它將覆蓋相應(yīng)的屬性設(shè)置,并且用參數(shù)值更新屬性設(shè)置。

 

?在打開 Recordset 對(duì)象后,這些屬性將變?yōu)橹蛔x。

注意   對(duì)于其 Source 屬性被設(shè)置為有效 Command 對(duì)象的 Recordset 對(duì)象,即使 Recordset 對(duì)象沒有打開,ActiveConnection 屬性也是只讀的。

如果在 Source 參數(shù)中傳送 Command 對(duì)象并且同時(shí)傳遞 ActiveConnection 參數(shù),那么將產(chǎn)生錯(cuò)誤。Command 對(duì)象的 ActiveConnection 屬性必須已經(jīng)設(shè)置為有效的 Connection 對(duì)象或者連接字符串。

如果在 Source 參數(shù)中傳送的不是 Command 對(duì)象,那么可以使用 Options 參數(shù)優(yōu)化對(duì) Source 參數(shù)的計(jì)算。如果沒有定義 Options 則性能將會(huì)降低,原因是 ADO 必須調(diào)用提供者以確定參數(shù)是否為 SQL 語句、存儲(chǔ)過程或表名。如果已確定所用的 Source 類型,則可以設(shè)置 Options 參數(shù)以指示 ADO 直接跳到相關(guān)的代碼。如果 Options 參數(shù)不匹配 Source 類型,將產(chǎn)生錯(cuò)誤。

如果不存在與 Recordset 關(guān)聯(lián)的連接,Options 參數(shù)的默認(rèn)值將為 adCmdFile。這是持久 Recordset 對(duì)象的典型情況。

如果數(shù)據(jù)源沒有返回記錄,那么提供者將 BOFEOF 屬性同時(shí)設(shè)置為 True,并且不定義當(dāng)前記錄位置。如果游標(biāo)類型允許,仍然可以將新數(shù)據(jù)添加到該空 Recordset 對(duì)象。

在打開的 Recordset 對(duì)象上完成操作時(shí),可使用 Close 方法釋放任何相關(guān)的系統(tǒng)資源。關(guān)閉對(duì)象并非將它從內(nèi)存中刪除,可以更改它的屬性設(shè)置并且在以后使用 Open 方法再次將其打開。要將對(duì)象從內(nèi)存中完全刪除,可將對(duì)象變量設(shè)置為 Nothing。

在設(shè)置 ActiveConnection 屬性之前調(diào)用不帶操作數(shù)的 Open,可通過將字段追加到 Recordset Fields 集合創(chuàng)建 Recordset 的實(shí)例。

如果已經(jīng)將 CursorLocation 屬性設(shè)置為 adUseClient,就可以采用兩種途徑之一異步檢索行。建議使用的方法是將 Options 設(shè)置為 adAsyncFetch?;蛘?,可以使用在 Properties 集合中的“異步行集合處理”動(dòng)態(tài)屬性,但如果未將 Options 參數(shù)設(shè)置為 adAsyncFetch,則可能丟失相關(guān)的被檢索事件。

注意   在 MSRemote 提供者中的背景提取僅能通過 Open 方法的 Options 參數(shù)得到支持。