Domino 9 und frühere Versionen > Entwicklung

NotesDocumentCollection.DeleteDocument -> Fehler

(1/2) > >>

stitze:
Hi ich bins nochmal,

also ich itereire gerade über eine NotesCollection, hole mir aus dieser ein NotesDocument, und itereiere dann über eine zweite NotesCollection um das NotesDocument aus meiner ersten NotesCollection in der zweiten zu finden. Habe ich dieses gefunden, muss ich das im weiteren Verlauf nicht mehr beachten, also habe ich mir gedacht lösche ich es raus. Es gibt es mehere Dokumente, welche die gleiche Bezeichnung haben wie mein oben gefundenes NotesDocument. Also habe ich mir gedacht mache ich mir eine weitere Collection in der alle Documente stehen mit der entsprechenden Bezeichnung und lösche diese aus meiner zweiten Collection heraus. also iteriere ich über meine Collection mit den zu löschenden Dokumenten und rufe für jedes darin enthaltene Dokument die Methode der zweiten Collection DeleteDocument auf.

Als Fehlermeldung erhalte ich jedoch:

Document is not from this Collection

 ???

Ist es nicht, denke ich aber schon, naja eigentlich habe ich keinen Plan, kann mir einer weiterhelfen.

Ist vieleicht etwas kompliziert, sry ;)

Mfg

Sebastian Titze

Kann es unter Umständen sein das sich die Variable des zu löschenden Dokumentes, welche ich der Methode DeleteDocument übergebe, aus der NotesCollection referenzieren muss, in der ich das Document eigentlich löschen will?
Obwohl dies eigentlich unlogisch wäre, weil soweit ich weiss das Document als ByVal übergeben wird ???

Driri:
Ich denke mal, daß man ohne Code nicht viel dazu sagen kann. Die Fehlermeldung sieht so aus, als wenn Du da irgendwie die Dokumente und die Collections vermischt.

stitze:
For i = 0 To docCollectionZ60Word.Count
         
         If Not ( docZ60Word Is Nothing ) Then
            Call progressBar.SetText( "DB Abgleich: Z52EWDK.nsf -> " & Cstr( lngCountPB) & " Z60Word.nsf -> " & Cstr( i ) , "Bitte Warten..." )
            
            strZ60Name = docZ60Word.Bezeichnung(0)
            strZ60Version = docZ60Word.Vnr(0)
            strZ52Name = docZ52EWDK.HBName (0)
            strZ52Version = docZ52EWDK.HBVersion(0)
            
            If strZ52Name  = strZ60Name  And strZ52Version = strZ60Version Then
               intCount = intCount + 1
               
               i = docCollectionZ60Word.Count
               
               strSelectionZ60Delete = "@Contains( Bezeichnung; """ & strZ60Name & """ )"
               
               Set docCollectionDelete = docCollectionZ60Word.Search( strSelectionZ60Delete, Nothing, 0 )
               
               For j = 1 To docCollectionDelete.Count
                  Set docDelete = docCollectionDelete.GetNthDocument(j)
                  Call docCollectionZ60Word.DeleteDocument( docDelete ) [Hier wird der Fehler ausgelöst]
               Next
            End If
            
            Set docZ60Word = docCollectionZ60Word.GetNextDocument( docZ60Word )
         End If
      Next

Driri:
Also die Fehlermeldung ist klar. Das zu löschende Dokument ist ja aus der Collection "docCollectionDelete" und nicht aus der "docCollectionZ60Word".

Jetzt ist die Frage, willst Du die Dokumente nur aus der Collection "docCollectionZ60Word" entfernen oder willst Du die tatsächlich aus der Datenbank löschen ?

Für aus der DB löschen kannst Du dann einfach RemoveAll verwenden.

Für löschen aus der Collection fällt mir jetzt nur der Weg ein, daß in der ersten For-Schleife mit abzuwickeln.

stitze:
Also, das Document hole ich mir zwar aus der docCollectionDelete, aber alle Dokumente sind auch in der docCollectionZ60Word.
Ich möchte sie nur aus der Collection entfernen, nicht aus der DB, dann werd ich gefeuert ;)

Problem ich kann es nicht in der ersten For Schleife mit abwickeln, weil wie schon versucht zu erklären gibt es mehrere Dokumente mit gleichem Inhalt im Bezeichnungsfeld, und diese sollen durch die verschachtelte For - Schleife aus der Collection gelöscht werden, da so der Abgleich wesentlich schneller wird auf dauer.

Ca. 1000 Datensätze in der ersten Schleife (nicht mit abgebildet) und ca 4000 in der zweiten Schleife, das haut rein würd ich sagen ;)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln