Domino 9 und frühere Versionen > Entwicklung
Anhänge gewählter Mails lösen & Löschen ?
Worn:
Hallo,
ich beziehe mich auf diesen Post.
http://www.atnotes.de/index.php?topic=10524.0
Dort wurde ein cooles kleines Agenten Feature beschrieben welches über ausgewählte Mails in der aktuellen DB rennt, alle Markierten Mails nach Anhängen durchsucht und diese dann in ein vorher ausgewähltes Verzeichnis löst.
Super Sache, soweit zufrieden. Ich möchte nun aber das diese Mails auch noch gelöscht werden. also habe ich hier (nur ein Auszug aus dem Script!) noch etwas eingefügt.::::
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim folder As String
Dim docid As String
folder = BrowseFolder ("","")
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument
While Not (doc Is Nothing)
docid = doc.NoteID
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile( folder+"\" & o.Name )
End Forall
del(docid)
End If
del(docid)
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Diese Variable docid übergibt dann die dokumentID (hab ich das richtig gemacht ?) an die Funktion DEL. Die sieht wiederum so aus:
Function del (docid As String) As String
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = s.currentdatabase
Set doc = db.GetDocumentByID(docid)
Call doc.Remove(True)
End Function
So Das Funktioniert auch, also das Anhänge lösen. Das löschen geht nicht, nur die letze der markierten Mails die löscht er, dann kommt eine Meldung:
Function needs a valid ADT Argument.
Also da ich laie bin (nur VB und VBA Kenntnisse) kann ich irgendwie nix damit anfangen. Kann mir jemand nen Tipp geben? Ich möchte also nur das die ausgewählten Dokumente nachdem die dort enthaltenen Anhänge gelöst wurden gelöscht werden, thats all.
Ich danke sehr...
BEN
PS: Noch was, ich kann den Agenten auch nicht debuggen. Da mekert er das ich den in einem Ansichtsfenster starten soll. Habe hier in einem Beitrag auch schon gelesen das man dann mal "aus Liste der Agenten starten" oder so ähnlich auswählen soll, was bei mir aber nicht das Problem löst.
Glombi:
Das übliche Problem: Du löschst doc und dann kommt
Set doc = collection.GetNextDocument(doc)
Das hintere doc gibt es aber nicht mehr.
Kann das jemand ins Entwicklerforum verschieben?
Andreas
Thomas Schulte:
Da du alle Dokument aus der Collection löschen willst ist das eine einfache Sache:
--- Zitat von: Worn am 24.06.05 - 10:24:50 ---Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim folder As String
Dim docid As String
folder = BrowseFolder ("","")
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument
While Not (doc Is Nothing)
docid = doc.NoteID
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile( folder+"\" & o.Name )
End Forall
End If
Set doc = collection.GetNextDocument(doc)
Wend
call collection.removeall(true)
End Sub
--- Ende Zitat ---
Worn:
Hy,
Danke das ging ja schnell.
@Glombi --> Also was schlägst du vor ?
@Thomas--> Das war es leider nicht. Kommt eine Fehlermeldung
"Type Missmatch"
Trotzdem danke ich schonmal für Hilfe.
PS. Ja bitte verschieben, das sollte eingentlich nicht hier rein, war ein versehentliches Versehen ::)
diali:
temporär das Dokument merken
--- Code: ---dim doc_temp as NotesDocument
...
While not doc is Nothing
set doc_temp = dc.GetNextDocument(doc)
...
set doc = doc_temp
Wend
...
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln