利用ADO連接數(shù)據(jù)庫時,Rs.recordcount總是返回-1,解決辦法如下:
就是在記錄集打開前加上Rs.cursorlocation=3
以下附此案例的相關(guān)資料(轉(zhuǎn)):
因為conn后第一個數(shù)字是1表示指針只能往前,3表示自由指針
使用RecordCount屬性可確定Recordset對像中記錄的數(shù)目。ADO無法確定記錄數(shù)時,或者如果提供者或游標類型不支持RecordCount,則該屬性返回–1。讀已關(guān)閉的Recordset上的RecordCount屬性將產(chǎn)生錯誤。
如果Recordset對像支持近似定位或書簽(即Supports(adApproxPosition)或Supports(adBookmark)各自返回True),不管是否完全填充該值,該值將為Recordset中記錄的精確數(shù)目。如果Recordset對像不支持近似定位,該屬性可能由于必須對所有記錄進行檢索和計數(shù)以返回精確RecordCount值而嚴重消耗資源。
Recordset對象的游標類型會影響是否能夠確定記錄的數(shù)目。對僅向前游標,RecordCount屬性將返回-1,對靜態(tài)或鍵集游標返回實際計數(shù),對動態(tài)游標取決于數(shù)據(jù)源返回-1或?qū)嶋H計數(shù)。
-------------------------------------------------------------------------------------------------------------------------------
rs.CursorLocation=3 是什么意思
3 就是rs.CursorLocation = adUseClient
就是代表使用客戶端光標,和他對應(yīng)的是 rs.CursorLocation = adUseServer 服務(wù)端光標
---------------------------
看一下,比我解釋的清楚
CursorLocation 屬性
設(shè)置或返回游標服務(wù)的位置。
設(shè)置和返回值
設(shè)置或返回可設(shè)置為以下某個常量的長整型值。
常量 說明
adUseNone 沒有使用游標服務(wù)。(該常量已過時并且只為了向后兼容才出現(xiàn))。
adUseClient 使用由本地游標庫提供的客戶端游標。本地游標服務(wù)通常允許使用的許多功能可能是驅(qū)動程序提供的游標無法使用的,因此使用該設(shè)置對于那些將要啟用的功能是有好處的。AdUseClient 具有向后兼容性,也支持同義的 adUseClientBatch。
adUseServer 默認值。使用數(shù)據(jù)提供者的或驅(qū)動程序提供的游標。這些游標有時非常靈活,對于其他用戶對數(shù)據(jù)源所作的更改具有額外的敏感性。但是,Microsoft Client Cursor Provider(如已斷開關(guān)聯(lián)的記錄集)的某些功能無法由服務(wù)器端游標模擬,通過該設(shè)置將無法使用這些功能。
說明
該屬性允許在可用于提供者的各種游標庫中進行選擇。通常,可以選擇使用客戶端游標庫或位于服務(wù)器上的某個游標庫。
該屬性設(shè)置僅對屬性已經(jīng)設(shè)置后才建立的連接有影響。更改 CursorLocation 屬性不會影響現(xiàn)有的連接。
對于 Connection 或關(guān)閉的 Recordset 該屬性為讀/寫,而對打開的 Recordset 該屬性為只讀。
由 Execute 方法返回的游標繼承該設(shè)置。Recordset 將自動從與之關(guān)聯(lián)的連接中繼承該設(shè)置。
遠程數(shù)據(jù)服務(wù)用法 當用于客戶端 (ADOR) Recordset 或 Connection 對像時,只能將 CursorLocation 屬性設(shè)置為 adUseClient。