以下是我的程序,测试发现当我的记录数100多条时,会出现“行数不可用!-1“的情况,但当记录为70条至2条时,xlsRowNum有正确的行数,大家帮帮忙,这是为什么?是数据库问题还是我的程序问题,难道要我自己放着RowCount属性不用自己写个行数算法么?
    ……
    Set Rs = cn.OpenResultset(sql_str, 1, 4, 64)  'sql_str为查询语句,肯定有对应记录
    If Rs.EOF Then
        MsgBox "没有查询到满足的数据!", vbCritical + vbOKOnly, "系统提示"
        Exit Sub
    End If
    With Rs
    .MoveLast
    xlsRowNum = .RowCount '记录总数
    Debug.Print .RowCount
    If xlsRowNum < 1 Then
        MsgBox "行数不可用!" & xlsRowNum, vbCritical + vbOKOnly, "系统提示"
        Exit Sub
    End If
    ……

解决方案 »

  1.   

    请先定义:
    Rs.CursorLocation = adUseClient这样绝对不会有问题的了。试一下吧~~对了,楼主记得给分哦!
      

  2.   

    cn.CursorLocation = adUseClient
    cn.open "..."
      

  3.   

    用select count(*) from table 计算行数
      

  4.   

    用rowcount总是出毛病,不稳定.
      

  5.   

    同上 
    rstZhuCe.MoveLast '记录集中的移动方法,指针移动到记录集的末尾
    这条命令,在记录为空时,常报错。
    我想问,是不是也缺少了上面的语句?
      

  6.   

    Rs.CursorLocation = adUseClient
    为什么这样一定行啊,是什么原因哦!学习!天中天说的也没错,我也碰到过!
      

  7.   

    不定义是默认服务器端游标,如果不定义为客户端游标(adUseClient)。
    想象一下假如数据库(sql server2000)是你开发的,你要怎么样解决多用户同时访问的效率及冲突。
    如果每个客户端访问,直接取服务器端游标,数据服务器还不累死。