Domino 9 und frühere Versionen > ND6: Entwicklung

Neue Dokumente lassen sich nicht löschen

(1/1)

iukhdh:
Hallo liebes Forum,

kurz vor Jahresende komm ich nochmal mit einem Verständnisproblem, bei dem ihr mir sicher helfen könnt. Vorab möchte ich es aber nicht versäumen, Euch allen für die vielfältige Hilfe im vergangenen Jahr zu danken. Ohne Euch sähe die Lotus Script Welt bei mir viel grauer aus, als sie eh schon ist   ;) Ich wünsche Euch allen einen guten Rutsch nach 2009, wir werden uns sicherlich wiedersehen  :D

Nun meine Frage:

Ich habe einfache Dokumente, die die Anwender erstellen können, und die zum Schluß mit den Formelbefehlen


--- Code: ---@Command([FileSave]);
@Command([FileCloseWindow])
--- Ende Code ---

gespeichert werden.

Da ich in der Datenbank das Löschen der Dokumente mit der Entf. Taste unterbunden habe, habe ich in einer Ansicht einen Button zum Dokumente löschen, der wie folgt funktioniert:



--- Code: ---Sub Initialize
Dim session As New NotesSession
Dim db As Notesdatabase
Dim collMarked As NotesDocumentCollection
Dim docToChange As NotesDocument
Dim docTemp As NotesDocument

Dim nuiw As New NotesUIWorkspace

'Hol die aktuelle Datenbank
Set db=session.CurrentDatabase
'Hol die markierten Dokumente
Set collMarked = db.UnprocessedDocuments
'Hol das erste der Markierten Dokumente
Set docToChange = collMarked.GetFirstDocument

'Schleife um die markierten Dokumente der Reihe nach zu löschen
While Not (docToChange Is Nothing)

' Das nächste zu löschende Dokument wird schonmal rausgesucht
Set docTemp = collMarked.GetNextDocument (docToChange)

'Das aktuell markierte Dokument wird gelöscht
Call docToChange.Remove( True)

'Das schon rausgesuchte,  nächste Dokument wird zum aktuellen Dokument
Set docToChange = docTemp
Wend

Call nuiw.ViewRebuild

End Sub
--- Ende Code ---

Das Löschen funktioniert soweit eigentlich ganz OK. Nur ist mir letzthin aufgefallen, dass es bei neu angelegten Dokumenten, die ich gleich wieder löschen will, eben nicht funktioniert. Geh ich aus der Ansicht raus und wieder rein, dann klappt es wieder.

Woran kann das liegen?

 :-:


m3:
Morgähn!

Vermutlich daran, dass der View-Index noch nicht aktualisiert wurde. Hier könnte ein ViewRebuild nach dem Speichern ev. helfen.
Sprich Dich aber diesbezüglich mit Deinem Admin ab, da dieser Befehl doch einiges an Ressourcen am Server bindet.

Driri:
Noch ein kleiner Tipp. Die Zeilen hier, kann man durch eine einzige ersetzen :


--- Zitat ---'Hol das erste der Markierten Dokumente
   Set docToChange = collMarked.GetFirstDocument
   
'Schleife um die markierten Dokumente der Reihe nach zu löschen   
   While Not (docToChange Is Nothing)
      
' Das nächste zu löschende Dokument wird schonmal rausgesucht      
      Set docTemp = collMarked.GetNextDocument (docToChange)
      
'Das aktuell markierte Dokument wird gelöscht      
      Call docToChange.Remove( True)
      
'Das schon rausgesuchte,  nächste Dokument wird zum aktuellen Dokument      
      Set docToChange = docTemp
   Wend

--- Ende Zitat ---

Und zwar einfach so :


--- Zitat ---Call collMarked.RemoveAll(True)

--- Ende Zitat ---

Allerdings solltest Du dann auf eine leere Collection abfragen. Macht dann wieder 2 Zeilen mehr, ist aber immer noch kürzer  ;)


--- Zitat ---If collMarked.Count > 0 Then
   Call collMarked.RemoveAll(True)
End If

--- Ende Zitat ---

iukhdh:
@martin
d.h., wenn ich einfach mal ne Stunde oder so warte, und dann versuche die Dokumente zu löschen (ohne vorher die Ansicht zu wechseln) müsste es dann ja wohl klappen. (Je nachdem, wieoft der View-Index aktualisiert wird)

@Driri
Danke für den Tipp. Der umständliche Code liegt daran, dass ich zwischendrin noch Abfragen hatte, die ggf. ein Löschen noch verhindern, falls bestimmte Werte gesetzt sind. Das hab ich aber inzwischen anders gelöst und rausgelöscht. Übrig blieb dieses Gerüst, welches ich nun natürlich so ändern kann (und werde) wie du vorgeschlagen hast.

m3:

--- Zitat von: iukhdh am 30.12.08 - 09:21:11 ---@martin
d.h., wenn ich einfach mal ne Stunde oder so warte, und dann versuche die Dokumente zu löschen (ohne vorher die Ansicht zu wechseln) müsste es dann ja wohl klappen. (Je nachdem, wieoft der View-Index aktualisiert wird.
--- Ende Zitat ---
IMHO auch mit Ansichtswechsel, aber prinzipiell ja.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln