Boah... 150000 Datensätze monatlich löschen.... würde mich nicht wundern, wenn Euch diese Applikation irgendwann um die Ohren fliegt...
Es ist doch so einfach, bei einem import zu prüfen, ob ein Dokument schon da ist oder nicht:
1. Ansicht, sortiert nach "eindeutigem Schlüssel". Wenn der nur eindeutig ist, wenn man alle Felder miteinander verknüpft, dann ist das halt so. 2. Spalte: @Text( @DocumentUniqueID)
2. Vor Beginn des Imports diese Ansicht iterieren und eine Liste mit den existierenden Schlüsseln erstellen. Eine Liste mit 150.000 Dokumenten
könnte wird speichertechnisch problematisch sein, deshalb würde ich hier mit UNID arbeiten:
Dim lstrUnid List as String
'- Ansicht durchlaufen und für jeden ViewEntry:
lstrUnid( ViewEntry.ColumnValues(0) ) = ViewEntry.ColumnValues(1)
Dieses Vorgehen hat den Vorteil, dass man später nicht 150.000 Lookups machen muss, die die Laufzeit sprengen
3. Für jeden importierten Datensatz Schlüssel bilden und schauen: ist in Liste? Wenn ja: Dokument per Unid holen, Updaten (oder sogar prüfen, ob man updaten muss, hier arbeite ich gerne mit Hashwerten wegen der Performance), und Eintrag aus Liste entfernen. Wenn nein: Dokument neu erstellen
4. Am Ende sind alle Einträge, die in der Liste noch drin sind, nicht mehr im Quellsystem: UNIDs durchlaufen und Dokumente löschen...
Ohne Hashing- Vergleiche sind das max. 100 Zeilen Code. Wenn man zur Performance- Optimierung auch noch Hashed und die Hashes vergleicht, dann sind es vielleicht 200 Zeilen Code...