这两个是一样的啊。前一个是ODBC语句访问。后一种是ADO的访问。而rs.recordcount=-1表是没有记录。即返回0条。最后用:not (rs.eof and rs.bof)

解决方案 »

  1.   

    当strSQL改为:
     strSQL = "Provider=SQLOLEDB.1;server=" & strServer & ";user id=" & strUser & ";password=" & strPass
    这个写错了
    找个能联的报表啊,数据源啊什么的产生一个
    复制过来再稍微修改一下就对了
    具体例子我计算机没有安装程序文件无法帮你产生
      

  2.   

    当我的sql语句改成sql = "select * from editor" 在两个数据源下都可以用的。可以加上条件查询,就找不到记录了:(,
      

  3.   

    rs.Open sql, cnMain, adOpenKeyset, adLockPessimistic, adCmdText
    这里有问题,一些参数设计不对,所以rs.recordcount返回-1。具体请查看adodb.Recordset的帮助,可以找到相关的参数说明。rs.recordcount=-1并不是没有记录,当执行存储过程的时候,在ADO,ADO.NET里面都是返回-1的。可以使用rs.EOF来判断是否有记录。
      

  4.   

    rs.CursorLocation = 3   设置这个属性
    rs.Open ....
      

  5.   

    多谢zjcxc(邹建)、rym1020和各位朋友的帮忙,问题解决,呵呵,刚刚开始玩sqlserver,很多细节还不太明白