我弄了一個帶傳入引數的存盤程序。 sql里測驗沒問題。
Private Sub Command1_Click()
DataEnvironment1.rsCommand1.Open "exec _bb_drwancheng" ---- 除錯到這一行就報錯。。。。
If DataEnvironment1.rsCommand1.RecordCount > 0 Then
DataReport1.Show 1
Else
MsgBox "此日期段沒有記錄,請重新選擇!", vbOKOnly
DataEnvironment1.rsCommand1.Close
End If
End Sub
請問大神們,我哪里寫錯了?
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
Open 方法 (ADO Recordset)打開游標。
語法
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
引數
Source 可選,變體型,計算 Command 物件的變數名、SQL 陳述句、表名、存盤程序呼叫或持久 Recordset 檔案名。
ActiveConnection 可選。變體型,計算有效 Connection 物件變數名;或字串,包含 ConnectionString 引數。
CursorType 可選,CursorTypeEnum 值,確定提供者打開 Recordset 時應該使用的游標型別。可為下列常量之一(參閱 CursorType 屬性可獲得這些設定的定義)。
常量 說明
AdOpenForwardOnly (默認值)打開僅向前型別游標。
AdOpenKeyset 打開鍵集型別游標。
AdOpenDynamic 打開動態型別游標。
AdOpenStatic 打開靜態型別游標。
LockType 可選。確定提供者打開 Recordset 時應該使用的鎖定(并發)型別的 LockTypeEnum 值,可為下列常量之一(參見 LockType 屬性可獲得詳細資訊)。
常量 說明
AdLockReadOnly (默認值)只讀 — 不能改變資料。
AdLockPessimistic 保守式鎖定(逐個) — 提供者完成確保成功編輯記錄所需的作業,通常通過在編輯時立即鎖定資料源的記錄。
AdLockOptimistic 開放式鎖定(逐個) — 提供者使用開放式鎖定,只在呼叫Update 方法時才鎖定記錄。
AdLockBatchOptimistic 開放式批更新—用于批更新模式(與立即更新模式相對)。
Options 可選,長整型值,用于指示提供者如何計算 Source 引數(如果它代表的不是 Command 物件),或從以前保存 Recordset 的檔案中恢復 Recordset。可為下列常量之一(參見 CommandType 屬性可獲得該串列中前五個常量的詳細說明)。
常量 說明
adCmdText 指示提供者應該將 Source 作為命令的文本定義來計算。
adCmdTable 指示 ADO 生成 SQL 查詢以便從在 Source 中命名的表中回傳所有行。
adCmdTableDirect 指示提供者更改從在 Source 中命名的表中回傳所有行。
adCmdStoredProc 指示提供者應該將 Source 視為存盤程序。
adCmdUnknown 指示 Source 引數中的命令型別為未知。
adCmdFile 指示應從在 Source 中命名的檔案中恢復保留(保存的)Recordset。
adAsyncExecute 指示應異步執行 Source。
adAsyncFetch 指示在提取 Initial Fetch Size 屬性中指定的初始數量后,應該異步提取所有剩余的行。如果所需的行尚未提取,主要的執行緒將被堵塞直到行重新可用。
adAsyncFetchNonBlocking 指示主要執行緒在提取期間從未堵塞。如果所請求的行尚未提取,當前行自動移到檔案末尾。
說明
使用 Recordset 物件的 Open 方法可打開代表基本表、查詢結果或者以前保存的 Recordset 中記錄的游標。
使用可選的 Source 引數指定使用下列內容之一的資料源:Command 物件變數、SQL 陳述句、存盤程序、表名或完整的檔案路徑名。
如果 Source 是檔案路徑名,它可以是完整路徑(“c:\dir\file.rst”)、相對路徑(“..\file.rst”)或 URL(“http://files/file.rst”)。
ActiveConnection 引數對應于 ActiveConnection 屬性,并指定在哪個連接中打開 Recordset 物件。如果傳送該引數的連接定義,則 ADO 使用指定的引數打開新連接。可以在打開 Recordset 之后更改該屬性的值以便將更新發送到其他提供者。或者可以將該屬性設定為 Nothing(在 Microsoft Visual Basic 中)以便將 Recordset 與所有提供者斷開。
對于直接對應于 Recordset 物件屬性的引數(Source、CursorType 和 LockType),引數和屬性的關系如下:
在 Recordset 物件打開之前屬性是讀/寫。
除非在執行 Open 方法時傳送相應的引數,否則將使用屬性設定。如果傳送引數,則它將覆寫相應的屬性設定,并且用引數值更新屬性設定。
在打開 Recordset 物件后,這些屬性將變為只讀。
注意 對于其 Source 屬性被設定為有效 Command 物件的 Recordset 物件,即使 Recordset 物件沒有打開,ActiveConnection 屬性也是只讀的。
如果在 Source 引數中傳送 Command 物件并且同時傳遞 ActiveConnection 引數,那么將產生錯誤。Command 物件的 ActiveConnection 屬性必須已經設定為有效的 Connection 物件或者連接字串。
如果在 Source 引數中傳送的不是 Command 物件,那么可以使用 Options 引數優化對 Source 引數的計算。如果沒有定義 Options 則性能將會降低,原因是 ADO 必須呼叫提供者以確定引數是否為 SQL 陳述句、存盤程序或表名。如果已確定所用的 Source 型別,則可以設定 Options 引數以指示 ADO 直接跳到相關的代碼。如果 Options 引數不匹配 Source 型別,將產生錯誤。
如果不存在與 Recordset 關聯的連接,Options 引數的默認值將為 adCmdFile。這是持久 Recordset 物件的典型情況。
如果資料源沒有回傳記錄,那么提供者將 BOF 和 EOF 屬性同時設定為 True,并且不定義當前記錄位置。如果游標型別允許,仍然可以將新資料添加到該空 Recordset 物件。
在打開的 Recordset 物件上完成操作時,可使用 Close 方法釋放任何相關的系統資源。關閉物件并非將它從記憶體中洗掉,可以更改它的屬性設定并且在以后使用 Open 方法再次將其打開。要將物件從記憶體中完全洗掉,可將物件變數設定為 Nothing。
在設定 ActiveConnection 屬性之前呼叫不帶運算元的 Open,可通過將欄位追加到 Recordset Fields 集合創建 Recordset 的實體。
如果已經將 CursorLocation 屬性設定為 adUseClient,就可以采用兩種途徑之一異步檢索行。建議使用的方法是將 Options 設定為 adAsyncFetch。或者,可以使用在 Properties 集合中的“異步行集合處理”動態屬性,但如果未將 Options 引數設定為 adAsyncFetch,則可能丟失相關的被檢索事件。
注意 在 MSRemote 提供者中的背景提取僅能通過 Open 方法的 Options 引數得到支持。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/62423.html
