Autor Thema: View-Eintrag löschen  (Gelesen 2502 mal)

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
View-Eintrag löschen
« am: 25.03.08 - 09:16:09 »
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

"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

  • Gast
Re: View-Eintrag löschen
« Antwort #1 am: 25.03.08 - 09:20:27 »
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

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: View-Eintrag löschen
« Antwort #2 am: 25.03.08 - 09:35:19 »
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

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

  • Gast
Re: View-Eintrag löschen
« Antwort #3 am: 25.03.08 - 09:55:42 »
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

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: View-Eintrag löschen
« Antwort #4 am: 25.03.08 - 14:13:20 »
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

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

Glombi

  • Gast
Re: View-Eintrag löschen
« Antwort #5 am: 25.03.08 - 14:15:55 »
Sorry, ich hatte da einen Fehler in meiner Formel oben  :-\:

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 = dc.GetNextDocument(doc)
      Call doc.RemovePermanently(True)
            
      Set doc = nextdoc
   Loop
   
   Call nuiw.ViewRefresh
   
End Sub

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: View-Eintrag löschen
« Antwort #6 am: 25.03.08 - 14:27:54 »
Hey Glombi,
danke, funktioniert wunderbar!!! :D

Liebe Grüße
Giordano

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz