代码是这样写的:Dim SysConn1 As New ADODB.Connection   'Create a ADO Connection
Dim rsnew1 As New ADODB.Recordset      'Create a RecordsetWith SysConn1
      .ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;User ID=" & OUserID.Text & ";Data Source=" & ODataSource.Text & ";Password=" & OPassword.Text
      .Open
End Withrsnew1.CursorLocation = adUseClient
sql = "SELECT * FROM NODES"
rsnew1.Open sql, SysConn1, adOpenKeysetDebug.Print rsnew1.RecordCount将这条sql语句在查询分析器里执行,可以查到224条记录,但通过程序只能查出113条记录。
如果数据库里有338条记录,通过程序只能查出139条记录。
如果数据库里有10条或6条,即比较少的记录,通过程序能全部查出。我快疯了!!

解决方案 »

  1.   

    把这句rsnew1.Open sql, SysConn1, adOpenKeyset改成:
    rsnew1.Open sql, SysConn1, 3,3
      

  2.   

    rsnew1.Open sql, SysConn1, 3,3
    试了,也不行
      

  3.   

    SQL的程序设计有时要考虚时间间隔问题。
    类似情况我也碰过,怎么解决的不记得了,好象一次不取那么多。
      

  4.   

    哈哈,这个问题很简单啊。
    在Debug.Print rsnew1.RecordCount语句前面加上一句rsnew1.movelast肯定可以得到正确的个数。
      

  5.   

    Dim SysConn1 As New ADODB.Connection   'Create a ADO Connection
    Dim rsnew1 As New ADODB.Recordset      'Create a Recordset
    SysConn1.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;User ID=" & OUserID.Text & ";Data Source=" & ODataSource.Text & ";Password=" & OPassword.TextSysConn1.CursorLocation=adUseClient  ******
    Set rsnew1.Activeconntion=SysConn1
    sql = "SELECT * FROM NODES"
    rsnew1.Open sql
    if rsnew!.RecordRount>0 then
        Debug.Print rsnew1.RecordCount
    endif
      

  6.   

    Dim SysConn1 As New ADODB.Connection   'Create a ADO Connection
    Dim rsnew1 As New ADODB.Recordset      'Create a RecordsetWith SysConn1
          .ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;User ID=" & OUserID.Text & ";Data Source=" & ODataSource.Text & ";Password=" & OPassword.Text
          .Open
    End Withstrsql = "SELECT * FROM NODES"
    if rsnew1.state=adstateopen then rsnew1.close
    rsnew1.open strsql,sysconn1,adopenkeyset,adlockreadonlyDebug.Print rsnew1.RecordCount
      

  7.   


    rsnew1.MoveFirst
    Debug.Print rsnew1.RecordCount