我用的数据库为mysql的数据库
在系统中加了个mysql的ODBC驱动我用ADO查询的时候为什么老是显示记录总数为-1而且当前记录位置也一直为-1

解决方案 »

  1.   

    为记录集设置正确的游标类型,具体内容可以看ADO的帮助。
      

  2.   

    程序有问题,你所取的记录集为空当然为-1了。我也发生过类似情况。
    用for i=0 to recordset.recordcount-1检查一下。
      

  3.   

    这样就可以    Rs.CursorLocation = adUseClient
        Rs.Open "select * from employees", CN, adOpenDynamic, adLockBatchOptimistic msgbox Rs.recordcount
      

  4.   

    支持 lihonggen0(李洪根,用.NET,标准答案来了)
      

  5.   

    有的资料说,得执行Rs.MoveLast然后再Rs.RecordCount才能得到准确的记录数.
      

  6.   

    from ADO210.CHM
    使用 RecordCount 属性可确定 Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回 –1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。如果 Recordset 对象支持近似定位或书签(即 Supports (adApproxPosition) 或 Supports (adBook) 各自返回 True),不管是否完全填充该值,该值将为 Recordset 中记录的精确数目。如果 Recordset 对象不支持近似定位,该属性可能由于必须对所有记录进行检索和计数以返回精确 RecordCount 值而严重消耗资源。Recordset 对象的游标类型会影响是否能够确定记录的数目。对仅向前游标,RecordCount 属性将返回 -1,对静态或键集游标返回实际计数,对动态游标取决于数据源返回 -1 或实际计数。
      

  7.   

    设置记录集的Cursorlocation=aduseclient
      

  8.   

    设置记录集的Cursorlocation=aduseclient
    Rs.MoveFIRST
    Rs.MoveLast
    msgbox Rs.recordcount
      

  9.   

    Cursorlocation=aduseclient上面都说了
    当Cursorlocation=adUseServer时要用
    adOpenStatic或者adOpenKeyset方式打开记录集,如果想用你必须设置
    Cursorlocation=aduseclient
      

  10.   

    谢谢大家的回答顺便说一句,当记录集没有记录的时候是不能MOVEFIRST 或都MOVELAST的
      

  11.   

    而且光设置为客户机游标是不够的, lihonggen0(李洪根,用.NET,标准答案来了) 的回答是对的