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