Autor Thema: Anhänge löschen wenn vorhanden  (Gelesen 6031 mal)

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Anhänge löschen wenn vorhanden
« am: 21.08.03 - 08:34:48 »
Hallo habe da doch nochmal ein Frage.
dieser Agent nimmt sich die markierten Mails und löscht die Anhänge heraus. Wie kann ich Abfragen ob überhaupt ein Anhang vorhanden ist??

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 object As NotesEmbeddedObject
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set doc = collection.GetFirstDocument
   
   While Not (doc Is Nothing)
      Set rtitem = doc.GetFirstItem( "Body" )
      If ( rtitem.Type = RICHTEXT ) Then      
         Forall o In rtitem.EmbeddedObjects
            Call o.Remove
            Call doc.Save( False, True )
         End Forall   
      End If
      Set doc = collection.GetNextDocument(doc)
   Wend
End Sub
« Letzte Änderung: 21.08.03 - 08:35:34 von MrMagoo »

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Re:Anhänge löschen wenn vorhanden
« Antwort #1 am: 21.08.03 - 09:03:47 »
Tja manchmal habe ich dann doch nen Geistesblitz
so gehts

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 object As NotesEmbeddedObject
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   
   If collection.Count = 0 Then  
      Msgbox "Kein Dokument ausgewählt"   
   Else
      
      Set doc = collection.GetFirstDocument
      While Not (doc Is Nothing)
         Set rtitem = doc.GetFirstItem( "Body" )
         If ( rtitem.Type = RICHTEXT ) Then   
            If Isarray( rtitem.embeddedObjects) Then
               Forall o In rtitem.EmbeddedObjects
                  Call o.Remove
                  Call doc.Save( False, True )
               End Forall   
            Else
               Msgbox "is nicht"
            End If
         End If
         Set doc = collection.GetNextDocument(doc)
      Wend
      Msgbox "Anhang / Anhänge gelöscht"
   End If
End Sub

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 löschen wenn vorhanden
« Antwort #2 am: 21.08.03 - 10:55:13 »
Gut außenrum Programmiert aber wie wäre es denn mit
flag = notesDocument.HasEmbedded ?

Thomas
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 BradCirclepit

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Anhänge löschen wenn vorhanden
« Antwort #3 am: 19.01.09 - 16:11:36 »
Das funktioniert soweit echt gut! Wenn man jetzt allerdings Termine in der Schablone hat wird die Fehlermeldung ``object variable is not set`` ausgegeben. Wie könnte man diese Fehlermeldung umgehen, oder von Grund auf ausschließen?
Grüße Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Anhänge löschen wenn vorhanden
« Antwort #4 am: 19.01.09 - 16:20:03 »
Termine? In der Schablone? Was willst Du uns damit sagen? Und wie sieht Dein Code aus und wo kommt die Fehlermeldung?

Bernhard

Offline BradCirclepit

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Anhänge löschen wenn vorhanden
« Antwort #5 am: 19.01.09 - 16:29:28 »
Termine? In der Schablone? Was willst Du uns damit sagen? Und wie sieht Dein Code aus und wo kommt die Fehlermeldung?

Bernhard

Wenn mich jemand über die Kalender-Funktion einlädt und ich die Informationsmail bezüglich der Einladung in mein E-Mail Postfach bekomme, dann steht diese Mail ja mit dem Briefumschlag-Icon in der normalen Mail-Schablone.

Wenn ich jetzt mit folgendem 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 object As NotesEmbeddedObject
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   
   If collection.Count = 0 Then 
      Msgbox "Kein Dokument ausgewählt"   
   Else
     
      Set doc = collection.GetFirstDocument
      While Not (doc Is Nothing)
         Set rtitem = doc.GetFirstItem( "Body" )
         If ( rtitem.Type = RICHTEXT ) Then   
            If Isarray( rtitem.embeddedObjects) Then
               Forall o In rtitem.EmbeddedObjects
                  Call o.Remove
                  Call doc.Save( False, True )
               End Forall   
            Else
               Msgbox "is nicht"
            End If
         End If
         Set doc = collection.GetNextDocument(doc)
      Wend
      Msgbox "Anhang / Anhänge gelöscht"
   End If
End Sub

wie ihn MrMagoo geschrieben hat alle Mails markiere und das Script ausführe, dann werden alle Anhänge soweit gelöscht bis er bei diesen Termin-Emails hängen bleibt und diese Fehlermeldung ausgibt. Die Mails die nach der Fehlermeldung noch markiert wären werden dann nicht berücksichtigt und behalten ihren Anhang.
Grüße Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Anhänge löschen wenn vorhanden
« Antwort #6 am: 19.01.09 - 17:01:32 »
In der Schablone steht da immer noch nix, sondern in Deiner Datenbank  ;) Und ein ErrorHandling hast Du auch nicht eingebaut und kannst daher nicht die Zeile nennen, in der es knallt. Jetzt habe ich das extra nachbauen müssen - das macht nicht glücklich ...

Bei einer Einladung (Form = "Notice") gibt es kein Body-Item. Du musst also prüfen, ob das Item überhaupt vorhanden ist. Details gibts jetzt zur Strafe von mir auch nicht - das steht alles in der DesignerHelp unter NotesItem  ;)

Bernhard

Offline BradCirclepit

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Anhänge löschen wenn vorhanden
« Antwort #7 am: 21.01.09 - 10:49:04 »
Habe es jetzt so gelöst, dass ich überprüfe ob überhaupt ein gültiger Wert vorhanden ist. Wenn der Wert ungültig ist soll er gar nichts machen, ist der Wert gültig macht er den Rest wie gehabt.

Vielen Dank für die Informationen.


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 object As NotesEmbeddedObject
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   
   If collection.Count = 0 Then
      Msgbox "Kein Dokument ausgewählt"   
   Else
      
      Set doc = collection.GetFirstDocument
      While Not (doc Is Nothing)
         Set rtitem = doc.GetFirstItem( "Body" )
         If (rtitem Is Nothing) Then         
         Else
            If ( rtitem.Type = RICHTEXT ) Then   
               If Isarray( rtitem.embeddedObjects) Then
                  Forall o In rtitem.EmbeddedObjects
                     Call o.Remove
                     Call doc.Save( False, True )
                  End Forall   
               End If
            End If
         End If
         Set doc = collection.GetNextDocument(doc)
      Wend
      Msgbox "Anhang / Anhänge gelöscht"
   End If
End Sub
Grüße Michael

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz