⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ado的recordset的recordcount属性总是为-1.txt

📁 VB技巧问答10000例 VB技巧问答10000例
💻 TXT
字号:
SYMPTOMS 
    ======== 
     
    When you request the RecordCount for a serverside recordset, a -1 may return. This occurs with ActiveX Data Objects (ADO) version 2.0 when the CursorType is adOpenForwardonly or adOpenDynamic. This occurs with ADO 1.5 only when the cursortype is adOpenForwardonly. Testing with the OLEDB provider for JET and SQL Server produces varying results, depending on the provider. 
     
    Providers may not support some CursorTypes. When you select a CursorType that is not supported, the provider should select the CursorType closest to what you request. Please refer to the documentation that comes with your provider. Also, please note that not all combinations of LockType and CursorType work together. Changing a LockType may force a change in the CursorType. Be sure to use debug to check the value of CursorType when conducting tests with your OLEDB provider. 
     
    CAUSE 
    ===== 
     
    The number of records in a dynamic cursor may change. Forward only cursors do not return a RecordCount. 
     
    RESOLUTION 
    ========== 
     
    Use either adOpenKeyset or adOpenStatic as the CursorType for server side cursors or use a client side cursor. Client side cursors use only adOpenStatic for CursorTypes regardless of which CursorType you select. 
     
    STATUS 
    ====== 
     
    This behavior is by design. 
     
    MORE INFORMATION 
    ================ 
     
    Steps to Reproduce Behavior 
    --------------------------- 
     
    1. Open a standard .exe project in Visual Basic. From the Project menu, choose References. Select either the Microsoft Active Data Object 1.5 Library or the Microsoft Active Data Object 2.0 Library. 
     
    2. Paste the following code in the form code window: 
     
     Option Explicit 
     Dim rs As ADODB.Recordset 
     
     Private Sub Form_Load() 
     'set up rs 
     Set rs = New ADODB.Recordset 
     rs.CursorLocation = adUseServer 
     rs.Open "Select ProductID from products", & _ 
     "Provider=Microsoft.Jet.OLEDB.3.51;" & _ 
     "Data Source=d:\vb6_win95\nwind.mdb", _ 
     adOpenDynamic, adLockUnspecified 
     
     Debug.Print rs.RecordCount 
     End Sub 
     
     3. Replace the preceding Data Source with a Data Source on your computer. Run the preceding form and note the record count. Change the CursorType to adOpenForwardonly and note the record count. 
     
     4. Change the CursorLocation to adUseClient and experiment with the different CursorTypes. In all cases the correct record count returns. 
<END>    
因为在c/s结构中,记录集是分页存储的,当你从服务器请求数据时,它不会给你全部数据。最好用rs.getrows()的到所有记录行 
<END>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -