我在数据库里明明有数据,但在用cnn.exeute或cmd.execute执行SQL后返回过来却是空的没有记录,晕了~~~~就连select * from sysobjects返回也是空的,怎么回来啊??

解决方案 »

  1.   

    dim cnn as new connection
    dim recs as new recordset
    dim cmd as new command
    cnn.connectionstring="provider=sqloledb;server=.;uid=sa;pwd="
    cnn.open
    cnn.defalutdatabase="dat"
    S1 = "select * from sysobjects"
    cmd.activeconnection=cnn
    recs.activeconnection=cnn
    cmd.CommandText = S1
    Set recs = cmd.Execute
    就是这些,当出现这种问题时把cnn.close后再open然后再对cmd与recs的activeconnection设置后则又可以使用,但用过之后又不行了,哇靠,这是怎么回事啊?
    我用ado2.7与ado2.8两个都是一样的结果,郁闷
      

  2.   

    你是怎么判断有无数据的,我今天正好也在做这样一个程序,执行后RECORDSET的RECORDCOUNT一直是-1,但是记录集中是有数据的。看一篇文章说“当ADO的RECORDSET的CURRSORTYPE是adForewordOnly时,RecordCount就是-1
      

  3.   

    楼上,你的RECORDSET的RECORDCOUNT与我的情况不一样,你只要把CursorLocationad设成UseClient然后在打开后立即调用movelast与movefirst就可以了,recordcount中就有数值了
      

  4.   

    netcrawller:游标应该没问题吧,我打开后bof与eof都是TRUE了也就是说他返回过来的是一个空记录集
      

  5.   

    dim cnn as new adodb.connection(当然这应该是笔误)不要cnn.defalutdatabase="dat"试试其实不用command对象也可以,直接Set recs = cnn.Execute(S1)
    (不过用这种方法打开的记录集如果不用cnn.cursortype=aduseclient的话,recordcount通常都是-1)
      

  6.   

    不用那么麻烦,也不要声明那么多对象,这样:
    dim conn as new adodb.connection
    dim rs as new adodb.recordset
    conn.connectionstring="provider=sqloledb;server=.;uid=sa;pwd="
    conn.open
    S1 = "select * from sysobjects"
    rs.open s1,conn,adOpenStatic,adLockOptimistic
    '你的其它代码
    rs.close
    conn.close
    set rs=nothing
    set conn=nothing