9

おそらく私は.NETで多くの時間を費やしましたが、ADORecordSetの現在のレコードを別のメソッドに簡単に渡すことができないのは奇妙に思えます。

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、より良い方法はありますか?

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 に答える