Nun, das geht nur über ein Recordset, dass vorher per "SELECT ..." angelegt wurde, wichtig ist hierbei die Verwendung eine CLientCursers.

Per .AddNew-Methode können dann neue Sätze erst mal lokal hinzugefügt werden, vorhandene Sätze können direkt per ".Fields("Name")" bzw "!Name" geändert werden.

Zum Schluß ist dann die Methode .UpdateBatch aufzurufen, die nun alle Änderungen in die Zieltabelle überträgt.

Über den Filter ".adFilterPendingRecords" bzw. ".AdFilterConflictingRecords" können die nicht übertragenen bzw. fehlerhaften Sätze ausgefiltert werden.

UpdateBatch hat ggf. in Mehrbenutzerumgebeungen den Nachteil, dass Änderungen/Neuanlagen nicht sofort für alle verfügbar sind und Konflikte schwerer erkennbar werden.

Auch die Anzahl der Operationen (Speicherbedarf) ist da begrenzt.

Es funktioniert also auch folgendes:

Set MyRcd = MyConnect.Execute("Select * from MyTable where Key1=''"

' Erzwingen eines leeren Recordsets

for x=1 to 1000
MyRcd.AddNew
MyRcd!F1 = newval

if x mod 100 = 0 then
MyRcd.UpdateBatch
MyRcd.Requery
endif

next

' Update alle 100 Sätze
' Requery gibt wieder ein leeres Recordset