9

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

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 或创建一个新 Record 并手动将每个字段复制到它。

StackOverflow,有没有更好的方法?

4

3 回答 3

4

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

于 2013-03-27T16:45:48.970 回答
2

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

GetRows() 方法采用可选参数来指定要获取的行数、从哪里开始以及要获取的字段

所以:

ProcessRecord(data.GetRows(1,adBookmarkCurrent))

应该对所有领域都这样做

于 2013-04-10T13:54:53.107 回答
0

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

于 2013-03-27T16:51:12.610 回答