下面的代码为什么
rowCount 得到的是-1呢
TempArr 也得不到东西啊
 Dim Conn As New ADODB.Connection
 Dim RS As ADODB.Recordset
 Dim rowCount As Integer
 Conn.Open "Provider=OraOLEDB.Oracle; Data Source=21; User ID=userName; Password=password"
Set RS = Conn.Execute("select * from tableName")
rowCount = rs.recordcount
TempArr = RS.GetRows(1)

解决方案 »

  1.   

    GetRows 方法 (ADO)
             将 Recordset 对象的多个记录恢复到数组中。语法array = recordset.GetRows( Rows, Start, Fields )返回值返回二维数组。参数Rows    可选,长整型表达式,指定检索记录数目。默认值为 adGetRowsRest (-1)。Start    可选,字符串或长整型,将 GetRows 操作开始处的记录赋值给书签。也可使用下列 BookEnum 值。常量 说明 
    adBookCurrent 从当前记录开始。 
    adBookFirst 从第一条记录开始。 
    adBookLast 从最后一条记录开始。 
    Fields   可选。代表单个字段名、顺序位置、字段名数组或序号位置数的变体型。ADO 仅返回这些字段中的数据。说明使用 GetRows 方法可将记录从 Recordset 复制到二维数组中。第一个下标标识字段,第二个则标识记录号。当 GetRows 方法返回数据时数组变量将自动调整到正确大小。如果不指定 Rows 参数的值,GetRows 方法将自动检索 Recordset 对象中的所有记录。如果请求的记录比可用记录多,则 GetRows 仅返回可用记录数。如果 Recordset 对象支持书签,则可以通过传送该记录的 Book 属性值来指定 GetRows 方法应开始检索数据的位置。如要限制 GetRows 调用返回的字段,则可以在 Fields 参数中传送单个字段名/编号或者字段名/编号数组。在调用 GetRows 后,下一个未读取的记录成为当前记录;如果没有更多的记录,则 EOF 属性设置为 True。
      

  2.   

    不要用select *,写上你想抽取的每个字段的名字试试!
      

  3.   

    Dim Conn As New ADODB.Connection
     Dim RS As ADODB.Recordset
     Dim rowCount As Integer
    '指定一下connection类型
    'Conn.CursorLocation = 3
    '这样就能返回值了
     Conn.Open "Provider=OraOLEDB.Oracle; Data Source=21; User ID=userName; Password=password"
    '做一些改动Set RS = Conn.Execute("select count(*) as FCount from tableName")
    rowCount = rs("FCount")
      

  4.   

    Set rs = Conn.Execute("select a from tableName")
    if rs.next() = true then
        rowCount = rs.recordcount
        TempArr = rs.fields("a")
    end if
      

  5.   

    第一次rs是定位在-1,你先要移动到下一行再拿,rs.movenext
      

  6.   

    根据上面的说法测试后存在下面的问题:
    1.设置 'Conn.CursorLocation = 3 后执行不了Set rs = Conn.Execute(sql)
    2.recordset根本没有.next()函数
    3.不要用select *,写上想抽取的每个字段的名字也不行!            为什么啊?
      

  7.   

    请参考
    http://expert.csdn.net/Expert/topic/2710/2710006.xml?temp=8.526248E-02