Domino 9 und frühere Versionen > ND8: Entwicklung

Problem mit löschen von Dokumenten in einer Collection

(1/1)

Pir0x:
Huhu, ich hab hier nenn kleines Problem beim löschen von Dokumenrt, aus meiner View.

Also ich möchte alle markierten Dokumente löschen, dazu hohl ich sie mir erstmal alle in eine Collection, guck dann ob das Kriterium (Projektzeit) sinvoll ist, wenn sie 0 ist, soll das Dokument zum löschen frei gegeben sein, wenn es nicht der Fall ist, wird das Dokument ist der Collection herausgenommen.

Zum Schluss sollen dann die nicht sinnvollen Dokumente, die in der Collection verblieben sind, gelöscht werden.

hier der QT dazu:


--- Code: ---Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uiview As NotesUIView
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set uiview = ws.CurrentView
Set dc = uiview.Documents
Set doc = dc.GetFirstDocument
While Not (doc Is Nothing)
If doc.HasItem ("BewP_Projektzeit") Then
If doc.GetItemValue ("BewP_Projektzeit") (0) <> 0 Then
Call dc.DeleteDocument(doc)
End If
End If
Set doc = dc.GetNextDocument (doc)
Wend

If dc.Count <> 0 Then
Call dc.RemoveAll(True)
End If

End Sub

--- Ende Code ---

Problem an der Sache ist jetzt, wenn ich ein Dokument aus der Collection herausnehmen, wird er mir nenn Fehler bei Set doc = dc.GetNextDocument (doc) geben.

Ich steh da gerade irgendwie aufen Schlauch wie ich das alternativ lösen kann und wollte euch mal um einen Rat bitte :)


Gruß Ricco

ZaLudtske:
Hallo,

arbeite mit dem NotesView-Objekt und der NotesViewEntryCollection, dann solltest du keine Probleme haben

HTH

Rainer

DerAndre:
Das übliche Problem.
Mit dem löschen des Dokumentes ziehst Du Dir den Bezug unter dem Popo weg.

Was Du machen kannst, ist dir als erstes in der while Schleife das nächste Doc aus der Collection holen und am Ende machst Du dann nicht doc = dc.next... sondern doc = nextdoc

Pir0x:
wenn ich dich richtig verstanden hab meisnt du das so


--- Code: ---While Not (doc Is Nothing)
Set nextdoc = dc.GetNextDocument(doc)
If doc.HasItem ("BewP_Projektzeit") Then
If doc.GetItemValue ("BewP_Projektzeit") (0) <> 0 Then
Call dc.DeleteDocument(doc)
End If
End If
Set doc = nextdoc
Wend

--- Ende Code ---

also so funktionierts, danke Andre

DerAndre:
Jepp so meinte ich das.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln