> ' If we have no record > If lnCount = 0 Then > Return True > End If > > ' Get the number of loops > lnLoop = Int(lnCount / 1000) > > ' If it is less than zero > If lnLoop = 0 Then > lnLoop = 1 > End If > > ' For each loop > For lnCounter = 1 To lnLoop > > ' Get the start position > lnStart = (lnCounter * 1000) - 1000 > > ' Maximize to the number of records > lnMax = Math.Min(lnStart + 1000, lnCount) > > ' Scan all records > For lnCounter2 = lnStart To lnMax - 1 > loRow = oDataProvider.oDataSet.Tables("Temp").Rows(lnCounter2) >Resolving loRow repeatedly in that last line looks a bit slow. Why not:
Dim rows as DataRowCollection = oDataProvider.oDataSet.Tables("Temp").Rows For lnCounter2 = lnStart To lnMax - 1 loRow = rows(lnCounter2)Come to that why not allow a flexible batch size.Something like:
Public Sub ProcessAll(ByVal lnBatchSize As Integer) Dim i As Integer = 0 Dim lnCount As Integer = oDataSet.Tables("Temp").Rows.Count While i < lnCount - lnBatchSize ProcessBatch(i, i + lnBatchSize - 1) i += lnBatchSize End While ProcessBatch(i, lnCount) End Sub Public Sub ProcessBatch(ByVal first As Integer, ByVal last As Integer) Dim loRow As DataRow Dim rows As DataRowCollection = oDataSet.Tables("Temp").Rows For lnCounter2 As Integer = first To last loRow = rows(lnCounter2) Next End Sub