将当前的ADO记录传递给另一个功能

时间:2013-03-27 12:41:47

标签: vba vb6 adodb

也许我在.NET中花了太多时间,但似乎很奇怪我无法轻松地将当前的ADO RecordSet记录传递给另一种方法。

Private Sub ProcessData(data As ADODB.Recordset)
    While (Not data.EOF)
        ProcessRecord ([data.CurrentRecord]) ' <-- There is no CurrentRecord property.
        data.MoveNext        
    Wend
End Sub

Private Sub ProcessRecord(singleRecord As ADODB.Record)
    ' Do stuff.
End Sub

我在主题上找到的信息很少表示要传递整个RecordSet或创建一个新记录并手动将每个字段复制到其中。

StackOverflow,有更好的方法吗?

3 个答案:

答案 0 :(得分:4)

就个人而言,我会将整个记录集传递给ProcessRecord子例程。记录集总是通过引用传递,因此没有传递记录集的开销(性能或内存消耗)。只需确保不要移动到ProcessRecord子例程中的下一条记录。

答案 1 :(得分:2)

您可以使用GetRows()方法将数据加载到数组中,然后让ProcessRecord仅对数组起作用,但这会使方法与数据集“断开连接”,这可能不是您想要的。

GetRows()方法使用可选参数来指定要获取的行数,从何处开始以及要获取的字段

所以:

ProcessRecord(data.GetRows(1,adBookmarkCurrent))

应该为所有字段

执行此操作

答案 2 :(得分:0)

不幸的是没有..你不能从Recordset中提取单个记录..因为G. Mastros说没有额外的开销通过引用传递整个记录集并使用当前记录所以你不妨这样做< / p>