Domino 9 und frühere Versionen > Entwicklung
Agent doppelte Dokumente löschen
Axel:
Hi,
ich glaube aber auch, dass das nicht ganz unproblematisch ist.
Das Problem dürfte hier liegen:
Set entrycollection = view.AllEntries
Damit hast du alle Dokumente in einer Ansicht. Was passiert aber, wenn doppelte Dokumente gelöscht werden. In entrycollection sind sie aber noch vorhanden. Versucht man dann drauf zuzugreifen, knallts. Das müsste man irgendwie abfangen. Aber dafür fehlt mir im Moment die Idee wie.
Axel
klaussal:
@axel,
so gesehen ist mein erster ansatz dann doch nicht so schlecht. dabei fliegt ja nur das doppelte doc raus. das ist zwar zeitaufwendig, aber es klappt.
Axel:
@klaussal
Ja aber,....
Ein Teufel steckt auch hier noch im Detail. Du machst das mit
Set doc = view.GetFirstDocument
While...
Set doc = view.GetNextDocument(doc)
Wend
...
Wenn du dann doc löscht, weil doppelt und älter, fehlt der Bezug für GetNextDocument. Das muss auch irgendwie abgefangen werden.
Axel
klaussal:
@axel,
jau, stimmt. :'(
nächster ansatz: eine view seq. durchgehen. für jedes doc eine collection bilden, jedes doc dieser collection anschauen, wenn docid-collection = doc-id-view, nix tun, sonst löschen, next document.
da mrmagoo sich aber ausgeklinkt hat, sollte es jetzt reichen.
Don Pasquale:
Wie wäre damit ?
Dim session As NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim RemoveDoc As NotesDocument
Dim LOESCHLISTE List As String*32
Set session = New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView( "DEINE VIEW" )
Set doc = view.GetFirstDocument
While Not doc Is Nothing
If DOPPELT Then
j = j + 1
LOESCHLISTE(j) = doc.UniversalID
End If
Set doc = view.GetNextDocument(doc)
Wend
Forall x In LOESCHLISTE
Set RemoveDoc = db.GetDocumentByUNID(X)
Call Removedoc.RemoveFromFolder("($Inbox)")
End Forall
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln