Domino 9 und frühere Versionen > ND7: Entwicklung

View-Eintrag löschen

(1/2) > >>

Dubidu:
Hallo an alle,
ich versuche gerade ein View-Eintrag zu löschen. Leider klappt das nicht.
Vielleicht findet jemand den Fehler.
Hier der Quellcode:


--- Code: ---Sub Click(Source As Button)
Dim ns As New NotesSession
Dim db As NotesDatabase
Set db = ns.CurrentDatabase
Dim nd As New NotesDocument(db)
Dim view As NotesView
Dim vec As NotesViewEntryCollection

Set view = db.GetView("Papierkorb")

Set vec = view.GetAllEntriesByKey("Name")
Call vec.RemoveAll(True)
End Sub
--- Ende Code ---

"Papierkorb" ist ein Folder. Kann man das mit einer View vergleichen bzw. habe ich mit db.GetView alles richtig gemacht?
"Name" ist der Wert eines Column, also einer Spalte.

Anbei ein Screenshot zur Veranschaulichung.

Liebe Grüße
Giordano

Glombi:
Es wird nach dem Wert "Name" in der ersten sortierten Spalte gesucht. Du hast da einen Denkfehler.

Du musst so iterieren:
dim doc as NotesDocument
dim nextdoc as NotesDocument

set doc = view.GetFirstDocument
do while not (doc is nothing)
set nextdoc = doc
call doc.RemovePermanently(true)

set doc = nextdoc
loop


Andreas

Dubidu:
Hi Glombi,
danke, für den Hinweis!
Ich habe es jedoch so gemacht:


--- Code: ---Sub Click(Source As Button)
Dim ns As New NotesSession
Dim nuiw As New NotesUIWorkspace
Dim db As NotesDatabase
Set db = ns.CurrentDatabase
Dim nd As New NotesDocument(db)
Dim view As NotesView
Dim vec As NotesViewEntryCollection

Set view = db.GetView("Papierkorb")

Set vec = view.AllEntries
Call vec.RemoveAll(True)
Call nuiw.ViewRefresh
End Sub
--- Ende Code ---

Hat diese Vorgehensweise gegenüber deine irgendwelche Nachteile?

Wie kann ich außerdem kontrollieren, ob ein Eintrag markiert ist, oder nicht?
Wenn ich nur markierte Einträge löschen möchte, käme wohl deine Variante in Frage.

Liebe Grüße
Giordano

Glombi:
Um nur markierte zu löschen, musst Du

dim dc as NotesDocumentCollection
set dc = db.UnprocessedDocuments

verwenden.
Dann mit meiner Methode über dc iterieren.

Andreas

Dubidu:
Hi Glombi,
danke, für deine Antwort!

Ich habe mal versucht deine Hinweise umzusetzen. Leider wird nur ein Element gelöscht. Außerdem kommt folgende Fehlermeldung:"Function requires a valid ADT argument".
Hier mein Quellcode:

--- Code: ---Sub Click(Source As Button)

Dim nuiw As New NotesUIWorkspace

Dim ns As New NotesSession
Dim db As NotesDatabase
Set db = ns.CurrentDatabase

Dim dc As NotesDocumentCollection

Dim nextdoc As NotesDocument
Dim doc As NotesDocument

Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument

Do While Not (doc Is Nothing)
Set nextdoc = doc
Call doc.RemovePermanently(True)

Set nextdoc = dc.GetNextDocument(nextdoc)
Set doc = nextdoc
Loop

Call nuiw.ViewRefresh

End Sub
--- Ende Code ---

In meinem Code habe ich zusätzlich in der Schleife Set nextdoc = dc.GetNextDocument(nextdoc) eingefügt, da ja Lotus bei jedem Schleifendurchgang das nächste Dokument holen sollte.

Liebe Grüße
Giordano

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln