Interessantes Thema und interessanter Thread.
Frage: was spricht gegen Implode?
Statt
Do While Not (viewentry Is Nothing)
lLauf = lLauf+ 1
If llauf Mod 1000 = 0 Then
Print "Export Datensatz... " & lLauf
End If
vColValues=viewentry.ColumnValues()
For iK = 0 To iColQuantity-1
If iK = 0 Then
sb.append(Replace(CStr(vColValues(iK)), s, r))
Else
sb.append(";" + Replace(CStr(vColValues(iK)), s, r))
End If
Next
'Daten schreiben...
Print #iFilenum, sb.toString
Call sb.Erase
Set viewentry = viewNav.GetNext(viewentry)
Loop
einfach
Do While Not (viewentry Is Nothing)
lLauf = lLauf+ 1
If llauf Mod 1000 = 0 Then
Print "Export Datensatz... " & lLauf
End If
vColValues=viewentry.ColumnValues()
'Daten schreiben...
Print #iFilenum, Implode(vColValues,";")
Set viewentry = viewNav.GetNext(viewentry)
Loop
macht in meiner Test-DB (exportierte Excel-Datei 49.152 Zeilen, 90,7MB) einen Unterschied von 33s --> 12s Gesamt-Laufzeit aus. Sprich: der Export ist in etwas mehr als einem Drittel der Zeit fertig.
Vielleicht sind Deine Daten ja so sauber in der View, daß Du gar kein großartiges Brimborium wie StringBuffer etc. brauchst? Versuch's doch mal...
Gruß,
Th.
Update: Habe in meiner Export-Ansicht jede Menge weitere Spalten eingefügt. 90s --> 38s. Wahrscheinlich geht's doch eher nur in Richtung 50%+ Zeiteinsparung.