現象
當在服務器端請求RecordCoun時會返回-1。這是因為ActiveX Data Objects (ADO) 2.0中的CursorType是adOpenForwardonly或者adOpenDynamic。
如果是ADO 1.5,只發生在cursortype是adOpenForwardonly的時候。如果使用OLEDB provider for JET和SQL Server產生的結果可能不同,這依賴於數據庫的提供者。
提供者可能不支持某些CursorTypes。當你選擇的CursorType不被支持時,提供者將選擇最接近於你所請求的CursorType。請參考你的提供者的文檔。此外,請注意不是所有的LockType和CursorType的組合都可以同時工作。改變LockType將強制改變CursorType。請確定使用調試來檢查CursorType的值。
原因
在動態的游標中紀錄號可能改變。Forwardonly的游標無法返回RecordCount。
解決辦法
使用adOpenKeyset(=1)或者adOpenStatic(=3)作為服務器端游標或者客戶端游標。客戶端只使用adOpenStatic作為CursorTypes,而不管你選擇什麼樣的CursorType。
狀態
這個形式是設計決定的。
==============================
鏈接文檔幫助理解解決
有關rs.open sql,1,1中“1”和另外一個“1”的解釋
rs.open sql,1,1也可以寫成
1
rs.CursorType = 1
2
rs.LockType = 1
3
rs.open sql
(鼠標移到代碼上去,在代碼的頂部會出現四個圖標,第一個是查看源代碼,第二個是復制代碼,第三個是打印代碼,第四個是幫助)