Autor Thema: Anhänge gewählter Mails lösen & Löschen ?  (Gelesen 17978 mal)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Anhänge gewählter Mails lösen & Löschen ?
« am: 24.06.05 - 10:24:50 »
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.
« Letzte Änderung: 24.06.05 - 10:29:44 von Worn »
Wer für alles offen ist der kann ja nich ganz dicht sein!

Glombi

  • Gast
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #1 am: 24.06.05 - 10:39:33 »
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

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #2 am: 24.06.05 - 10:46:21 »
Da du alle Dokument aus der Collection löschen willst ist das eine einfache Sache:
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
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #3 am: 24.06.05 - 11:06:09 »
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  ::)
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #4 am: 24.06.05 - 11:09:09 »
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
...
Gruß
Dirk

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #5 am: 24.06.05 - 11:37:25 »
OJE!!

Na es will nich so recht. Also ich gehe mal davon aus das dc = collection ist, quasi documentcollection.
Ich bekomme aber immer einen Type Mismatch.
Das ganze sieht jetzt so aus. Vielleicht bin ich ja Fehlerblind!

Code
 
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 doc_temp As NotesDocument
folder = BrowseFolder ("","")
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

While Not (doc Is Nothing)
Set doc_temp = collection.GetNextDocument(doc)
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
Call doc.Remove(True)
End If
Set doc = doc_temp 
Wend
End Sub


 

Also was verplane ich hier die ganze Zeit?

Vielen Dank

BEN
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #6 am: 24.06.05 - 11:43:18 »
in welcher Zeile kommt den der Fehler?
Gruß
Dirk

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #7 am: 24.06.05 - 11:49:49 »
Tja das kann ich leider nicht sagen. Ich kann nämlich nicht debuggen.
Da kommt dann immer die Meldung :

"Der Agent muss von einem Ansichtsfenster aus gestartet werden."

Ich habe schon Alle hier geschriebenen Ansätze probiert, aber ich komm nich zu dem gewünschten Ergebnis.

 ???

Also was tun, weitere Ideen  :-:

BEN
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #8 am: 24.06.05 - 11:54:01 »
Kann leider nur einen kurzen Blick auf den Code werfen, aber ich vermute, dass das Forall genau dann in die Hose geht, wenn gar keine EmbeddedObjects vorhanden sind.
Daher vor abfragen: If not (rtitem.EmbeddedObjects is nothing) Then ...

Wegen Debuggen: Da gab es doch gerade gestern einen Thread dazu - such den mal. Da wird beschrieben, wie man solch einen Agent debugfähig macht (Target umstellen auf "manuell aus der Liste der Agenten").

Bernhard

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #9 am: 24.06.05 - 12:02:21 »
... ansonsten kannst du auch mit Print/MsgBox-Befehlen eine Debug-Kette aufbauen.

Toni
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #10 am: 24.06.05 - 12:05:13 »
Hy,

ja diesen Beitrag habe ich auch schon gelesen und auch getestet, aber ich scheine einer der Pechvögel zu sein bei dem die Sachen nicht funktionieren  :-[. Ich bekomme da trotzdem noch die Meldung das der Agent in einem ....Fenster usw....

ja ich probiere das mal aus mit dem Forall. Aber es geht ja nur um ausgewählte Dokumente, und ich wähle ja nur welche aus die Anhänge haben.


BEN
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #11 am: 24.06.05 - 12:09:18 »
... dein Agent ist als "... auf alle markierten Dokumente einer Ansicht" deklariert. Wenn du den Agent nicht aus einer Ansicht startest, dann muß er als als "... einmalig ausführen - @Commands sind möglich" deklariert werden...

Toni
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #12 am: 24.06.05 - 12:16:44 »
Ähh also wenn ich das einstelle dann geht nach rechtsklick auf den Agenten in der Agentenliste und dann testen ein kleines Fenster auf wo drinne steht wann der Agent gestartet wurde und wann er beendet wurde, nicht sehr informativ hehehehehe.

Ohh man die kleinsten Wünsche sind immer sooo kompliziert!

Wieso geht nicht

if i = 1 then
lösch den scheiss.
end if

 :P

BEN


Vielleicht hat ja mal jemand Zeit sich das script (link im ersten Post)
selbst zu laden und dann mal zu testen was man machen muss damit der die ausgewählten Docs dann auch löscht.

Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #13 am: 24.06.05 - 12:19:58 »
... Wo liegt jetzt das Problem?

Toni
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #14 am: 24.06.05 - 12:23:42 »
... in deinem Script löschst du das Dokument, bevor du auf das nächste zugreifen möchtest. Da dein Vorgänger-Doc nicht mehr existiert, kann er das Folge-Doc nicht initialisieren.

Du musst also zuerst das Folge-Doc initialisieren und das Doc löschen - dazu arbeitest du am Besten mit 2 doc-Variablen ...

Oder du durchläufst die Collection ein zweites Mal und nimmst hier nur die Löschungen vor...

Toni
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #15 am: 24.06.05 - 12:35:52 »
Code
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 doc_temp As NotesDocument
folder = BrowseFolder ("","")
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

While Not (doc Is Nothing)
Set doc_temp = collection.GetNextDocument(doc)
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben

If Not (rtitem.EmbeddedObjects Is Nothing) Then 
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If

Set doc = doc_temp 'collection.GetNextDocument(doc)
Wend
End Sub

Das ist der Code und da kommt eine Meldung Type Mismatch.
Alles was ich will ist das dieser Agent über die markierten Documents rennt und alle Anhhänge in einen Ordner speichert, den ich ausgewählt habe. Anschließend soll er ohne zu fragen die gewählten Dokumente entfernen.

BEN
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #16 am: 24.06.05 - 12:39:21 »
was mich interessieren würde, warum Du nicht den Debugger benutzen und uns die Zeile mit dem Fehler mitteilen kannst?
Gruß
Dirk

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #17 am: 24.06.05 - 12:46:21 »
Code
' 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 doc_temp As NotesDocument

folder = BrowseFolder ("","")
Print "Ordner: " + folder

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

While Not (doc Is Nothing)
Set doc_temp = collection.GetNextDocument(doc)
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben

If rtItem.Type = 1 Then ' # Das Feld Body kann auch als Textfeld vorliegen - dann Type mismatch-Möglichkeit

If Not (rtitem.EmbeddedObjects Is Nothing) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If ' ende der Prüfung auf Rich-Text-Feld...

End If

Set doc = doc_temp 'collection.GetNextDocument(doc)
Wend

... das könnte es pi mal daumen sein...

Toni
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #18 am: 24.06.05 - 12:52:25 »
Danke immernoch TYPE MISSMATCH  :-:

Debugger kann ich nicht benutzen weil

a) weis ich nicht wie
b) ich muss ja dokumente auswählen die einen Anhang haben,
dazu brauche ich ja ne Ansicht
c) wenn ich in den Agenten gehe um diesen zu bearbeiten, dann
kann ich auf nem kleinen fenster welches sich öffnet ein paar sachen auswählen. Was soll ich da denn einstellen ?

- Auswahl in der Agentenliste
- Und unter Ziel ?


Thanks

BEN

Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #19 am: 24.06.05 - 12:55:34 »
a) Menü - Datei - Extras - Debug LotusScript
b) Dein Script starten wie immer
c) nichts verändern

nach dem Start des Agenten öffnet sich der Debugger, dann auf Fortfahren und nach der Fehlermeldung steht der Debugger in der richtigen Zeile.
Gruß
Dirk

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz