请问,RDO 查询数据是否有行数限制?Global En As rdoEnvironment              'UDB
Global Cn As rdoConnection               'UDB
Dim rs_Recordset As Recordset
dim str_sql as string Set En = rdoEngine.rdoEnvironments(0)
Set Cn = En.OpenConnection(DSNNAME, rdDriverNoPrompt, False, ps_user)
Cn.CursorDriver = rdUseOdbc
str_sql = "select * from tb1"
Set rdo_Resultset = Cn.OpenResultset(str_SQL, rdOpenDynamic)监视 rdo_Resultset.RowCount 是100,但是TB1实际有120条数据。查询条数有限制?结果集有限制?

解决方案 »

  1.   

    没啊
    我用的ODBC的连接
    一次8000多 一点问题没有
      

  2.   

    不行你先MoveLast 再MoveFirst试试
      

  3.   

    先换个其它类型的数据库试试,先确定不是DB2的问题。
    再将游标改为客户端游标,ADO中是CursorLocation,RDO中自己找一下。
      

  4.   


    解决了!我程序里有一句:On Error Resume Next
    而,Cn.CursorDriver = rdUseOdbc ,实际是错的,就没跳出提示错误.
    在Cn有确切对象后,Cn.CursorDriver是只读属性.要定义rdUseOdbc的游标类型,要在设置Cn前加这句话:
    En.CursorDriver = rdUseOdbc 这样就对了。
    但是,没有设置Cn.CursorDriver为rdUseOdbc 类型,也就是默认为rdUseIfNeeded,那么服务器就不返回全部的查询结果了吗?希望和大家探讨一下!
      

  5.   

    纪录集使用了纪录缓冲,看来默认的缓冲大小是100条纪录,所以刚打开时只取了第一批纪录;随着你向下移动纪录,纪录集会自动获取后续纪录。
    这对你其实是完全屏蔽的,唯一影响就是 RecordCount 反映的是当前已取得的纪录数而不是全部纪录数。
      

  6.   


    谢谢你的回复.但我还是有点疑问:这些记录查出来后,我要把它们一条条取出来,显示为一张报表.程序结构如下:Do Until rdo_Resultset.EOF
      '赋值给报表结构
      .....  rdo_Resultset.MoveNext
    Loop
    报表显示出来,也是100条,没有将后面的记录自动获取,所以感觉非常奇怪!
      

  7.   

    RowsetSize 就是缓冲区大小,默认 100。
    检查 MaxRows 属性,它决定返回的最多纪录数,默认应该是 0。
    还有在 Loop 后确认一下 RecordCount = 100,而不是报表显示的问题。
      

  8.   


    RowsetSize,MaxRows  是 rdoQuery对象才有的属性啊.
    我的程序里直接用了rdoResultset对象,而且是由Cn.OpenResultset函数返回的
      

  9.   

    我还是建议先换个数据库做同样的操作试试,印象中 RowCount 可以不正确,EOF 是完全有效的。
    很久以前用的DB2,不记得它是否能有多种Provider提供访问,如果有换用Provider试试。http://www.connectionstrings.com/?carrier=ibmdb2
      

  10.   

    解决了,顺便把后来的解决方法说下.我们旧的系统用的是DB2的数据库,版本5.0的.客户端运行程序,使用默认设置创建CN,如下:Set En = rdoEngine.rdoEnvironments(0)
    Set Cn = En.OpenConnection(DSNNAME, rdDriverNoPrompt, False, user)程序一直是可以正常查询的,也没有出现我所说的记录条数有限制的问题,后来系统改用DB2,7.2版本后,就出现了这个问题.在查阅很多资料后,在程序中加入了一句:Set En = rdoEngine.rdoEnvironments(0)
    En.CursorDriver = rdUseOdbcSet 
    Cn = En.OpenConnection(DSNNAME, rdDriverNoPrompt, False, user)程序又正常查询了,不会受到条数的限制.我在这个问题中,做了一些实验,不同的数据库反应不一样,ACCESS,SQL对这句话就不敏感,加不加都是一个性质.在网上找了些资料,但发现对于游标的详细描述都比较少,我估计不同的公司对游标的定义也不完全一致.