我在VB里面执行SELECT语句,表里面明明有10条记录,但是返回值rs.recordcount却是-1,可是数据是得到的,经查,原来是在表里面没有设置主键的问题.今天又让我碰到了类似的问题,但不是表,而是数据集,具体情况如下:
sql = "SELECT bmdm.id, SUM(zgzh.bqye), SUM(zgzh.fyzc) , COUNT(zgzh.id) FROM zgxx INNER JOIN zgzh ON zgzh.gh = zgxx.gh INNER JOIN bmdm ON zgxx.szbm = LTRIM(bmdm.DWDM) + LTRIM(bmdm.BMDM) WHERE (zgzh.nf = '2003') gROUP BY bmdm.id"
Set rc = getDataset(sql)测试:print rc.recordcount  得到:-1
测试:print rc(1)   得到:12000请问怎么解决此问题

解决方案 »

  1.   

    ' 使用客户端数据游标 Conn为Connection
     Conn.CursorLocation = adUseClient  sql = "SELECT bmdm.id, SUM(zgzh.bqye), SUM(zgzh.fyzc) , COUNT(zgzh.id) FROM zgxx INNER JOIN zgzh ON zgzh.gh = zgxx.gh INNER JOIN bmdm ON zgxx.szbm = LTRIM(bmdm.DWDM) + LTRIM(bmdm.BMDM) WHERE (zgzh.nf = '2003') gROUP BY bmdm.id"rs.open sql,COnn,3,3
    msgbox  rc.recordcount  
     
      

  2.   

    更正rs为rc使用Conn.CursorLocation = adUseClient 这句话就是了。
      

  3.   

    设置记录集的游标位置就可以了
    rs.CursorLocation = adUseClient当然设置连接游标位置也可以,记录集会继承这一设置
    前提是对其他记录集没有影响~
      

  4.   

    rs.CursorLocation = adUseClient
    这一句,必须放在rs.open前面
      

  5.   

    Conn.CursorLocation = adUseClient  sql = "SELECT bmdm.id, SUM(zgzh.bqye), SUM(zgzh.fyzc) , COUNT(zgzh.id) FROM zgxx INNER JOIN zgzh ON zgzh.gh = zgxx.gh INNER JOIN bmdm ON zgxx.szbm = LTRIM(bmdm.DWDM) + LTRIM(bmdm.BMDM) WHERE (zgzh.nf = '2003') gROUP BY bmdm.id"rs.open sql,COnn,3,3
    rs.movelast
    rs.movefirst
    msgbox  rc.recordcount