2013-03-27 24 views
7

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

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 

的零星信息,我关于这个问题的发现说,通过整个记录或创建一个新的记录,并手动每个字段复制到其中。

StackOverflow,有没有更好的方法?

+3

记录是不是一个记录,您可以选择单个记录作为一个记录,或者您也可以通过从结果记录或记录作为一个数组(GetRows的或串[ GetString的(http://www.w3schools.com/ado/met_rs_getstri ng.asp))。 – Fionnuala

回答

4

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

+2

我很可能只是传递整个RecordSet,它只是'ProcessRecord'没有业务知道所有的数据。我努力只给他们所需要的方法。 – nunzabar

0

不幸的是否定的。你不能从记录中提取一个记录。作为G. Mastros说,没有额外的开销作为参考和工作与当前记录通过整个记录,所以你还不如那样做

2

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

()方法有可选参数指定多少行获得的GetRows的,从哪里开始和领域得到

所以:

ProcessRecord(data.GetRows(1,adBookmarkCurrent))

应该做的所有字段

+0

谢谢你回答这个问题。 – user1422348

相关问题