Vom Grundsatz her passt das, aber bitte nicht die Dokumente löschen, die DB wird dann riesengroß (Deletion-Stubs), irrer Replikationsaufwand usw.
Zu Beginn des Agentenlaufes gehst Du durch alle vorhandenen Auswertungsdokumente und merkst Dir in einer Liste den Inhalt, etwa so:
Dim auswertungen List As Integer
Do While Not doc Is Nothing
auswertungen (doc.NameMitarbeiter (0) & "#" & doc.Datum (0) & "#" & doc.Thema (0)) = 1
Set doc = ...
Loop
Wenn Du dann die Felder der Dokumentationen durchgehst, prüfst Du bei jedem Eintrag, ob der in der Liste enthalten ist. Das Dokument legst Du nur an, wenn es den Listeneintrag noch nicht gibt
NameMitarbeiter = ... errechnet aus Eintrag
Datum = ... errechnet aus Eintrag
Thema = ... errechnet aus Feld
If Not IsElement (auswertungen (NameMitarbeiter & "#" & Datum & "#" & Thema)) Then
-> neues Auswertungsdokument erstellen
End If
Dieses Verfahren ist sauschnell, da Du nur einmal durch die bestehenden Auswertungsdokumente gehst. Du brauchst dafür auch keine Ansicht, um bei jedem Eintrag in der Ansicht nachzuschauen, ob es das Dokument schon gibt.
EDIT: Du könntest in die Dokumentationsdokumente durch den Agenten auch noch ein Auswertungsflag setzen, das beim Speichern des Dokumentes wieder entfernt wird. Dann brauchst Du nur die Dokumentationsdokumente abarbeiten, die dieses Flag nicht haben, denn die anderen wurden seit der letzten Auswertung nicht gespeichert. Oder Du merkst Dir an einer Stelle Datum und Uhrzeit der letzten Auswertung, und nimmst nur die Dokumentationsdokumente, die danach geändert wurden. Dann brauchst Du die Dokumentationsdokumente nicht extra zu speichern (ist sicherlich noch eleganter).