各位大侠,小弟在使用记录集的recordcount时总是出错!!!
开始时得到-1,在其他地方看到的的解决方法是
rs.open strsql,connect,1,1
结果试了,有时可以有时不好用,但是如果打开数据库并打开要查询的表就好用了!!
我使用的数据库是sybase sql anywhere
请各位赐教!!!

解决方案 »

  1.   

    我也遇到过同样的问题,最后还是通过如下方式解决(不过影响速度)
    do while not .eof
       n=n+1
       .movenext
    loop
      

  2.   

    ...
    connect.CursorLocation = adUseClient
    connect.Open
    rs.open strsql,connect,1,1在读记录集条数时,游标需要设成客户端的,否则即便有记录,recordcount也会显示为-1。游标默认情况是服务器端的。
      

  3.   

    将游标设定为客户端游标
    connect.CursorLocation = adUseClient
    不然的话就像一楼说的了,自己做个函数
      

  4.   

    同意: kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!) (
      
      在读记录集条数时,游标需要设成客户端的,否则即便有记录,recordcount也会显示为-1。
    游标默认情况是服务器端的。  dim rs as new adodb.recordset
      rs.CursorLocation = adUseClient
      rs.open ""
      

  5.   

    可以先movelast,再运行。recordcount,再movefirst
      

  6.   

    请先确定记录集中是否有记录.
    reset.open SQlstr,conn,3,3
      

  7.   

    使用do while not .eof
       n=n+1
       .movenext
    loop
    这种方法用消防水龙头(adOpenForwardOnly)提高速度
      

  8.   

    支持 yeah_yz(还没睡醒呢,又要上班了!) 
    我测试通过了
      

  9.   

    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordsetrs.Open "select * from dbstudent", cn, adOpenStatic, adLockReadOnly
    '注意,打开的记录集是 adOpenStatic静态类型,否则就是-1
    rs.RecordCount
      

  10.   

    rs.open strsql,connect,3,3
    这样写可能会有效。
      

  11.   

    connect.CursorLocation = adUseClient
    rs.open strsql,connect,adopenkeyset,adLockOptimistic
      

  12.   

    加上一句:
    connect.CursorLocation = adUseClient
    rs.open strsql,connect,1,1
    rs.recordcount就不会出现-1了.