使用 Connection 对象的 Execute 方法,可执行任何在指定连接的 CommandText 参数中传送给方法的查询。如果 CommandText 参数指定按行返回的查询,执行产生的任何结果将存储在新的 Recordset 对象中。如果命令不是按行返回的查询,则提供者返回关闭的 Recordset 对象。返回的 Recordset 对象始终为只读、仅向前的游标。如需要具有更多功能的 Recordset 对象,应首先用所需的属性设置创建 Recordset 对象,然后使用 Recordset 对象的 Open 方法执行查询并返回所需游标类型。

解决方案 »

  1.   

    游标问题
    adoRs.CursorType = adOpenForwardOnly '只向前游标
    '用键击游标
    adoRs.CursorType = adOpenKeyset
      

  2.   

    adoRs.CursorType = AdOpenDynamic
      

  3.   

    以上内容摘自MSDN。如其所说,通过CONNECTION对象的EXECUTE方法返回
    的RECORDSET对象是只读、仅向前的。
    因此,不能MOVEPREVIOUS,只能MOVENEXT。如果你非要使用EXECUTE方法来返回结果集,那么是无法设置其游标属性的。
      

  4.   

    junglerover(灌木丛)
    说得很清楚了!
    来慢了~~~~~~~~~~~
    execute执行的recordset是forwardonly的还有关于取 recordcount属性,如果你的连接的 cursorloction是服务端
    或者recordset 的cursortype是 服务端游标类型的那么recordcount=-1
    这个也要注意的
      

  5.   

    你的代码:
    If adoRs.EOF then
            
            For Tag=0 to 100
                Array(Tag)=" " & adoRs(0) & " "
                adoRs.MovePrevious
            Next
        End if
    我觉得你的代码有两个问题:
    1,记录集循环之前应该先进行指位.(movefirst/movelast).
    2,你不知道记录集中有多少记录时,循环100次是不是正确??
    你试试看了!
      

  6.   

    Set adoRs = Nothing
    Set adoRs = adoCon.Execute("select * from Table")
    adoRs.LockType = adLockOptimistic
    adoRs.CursorType = adOpenKeyset
    Tag=0
    do while not adoRs.EoF
       Array(Tag)=" " & adoRs(0) & " "
       Tag=Tag+1
       adoRs.MoveNext
    loopTag=0
    do while not adoRs.BOF then
        Array(Tag)=" " & adoRs(0) & " "
        Tag=Tag+1
        adoRs.MovePrevious
    loop
      

  7.   

    以上问题已经解决,谢谢大家的帮助。
    只要把
      Set adoRs = Nothing
        Set adoRs = adoCon.Execute("select * from Table")
    改为
      Set adoRs = Nothing
        adoRs.Open "select * from Table", adoCon, adOpenDynamic, adLockOptimistic
    或者
      Set adoRs = Nothing
        adoRs.Open "select * from Table", adoCon, adLockOptimistic
    或者
      Set adoRs = Nothing
        adoRs.Open "select * from Table", adoCon, adOpenDynamic
    都可以
    在此要感谢junglerover(灌木丛)提醒的用open方法而不是execute,还要感谢fuxc(Michael)告知的adoRs.CursorType = AdOpenDynamic即把CursorType属性改为AdOpenDynamic,还有gxingmin(小高)提醒的adoRs.LockType = adLockOptimistic。虽然你们没有一个人直接回答了我的问题(可以是在下天生愚蠢:),但是在综合了你们的方法之后还是解决了我的问题,因此给你们每人加15分。
    此外还要感谢Quady515(柱子)的注释(给你一分)和ferrytang(ferry)的提醒(给你两分);此外还要感谢wangchong(网虫)仔细分析了我的代码(给你两分),在这里我要解释的是那个循环并没有其他用处,只是我用在这里来说明问题的,以后在编程过程中我一定会注意的。
    不知你们对我的散分结果有什么意见吗?最后再次谢谢大家的帮助!!!