Autor Thema: Attachment aus einer Mail DB lösen  (Gelesen 2470 mal)

Offline sculer

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Attachment aus einer Mail DB lösen
« am: 16.12.05 - 15:04:54 »
Hallo,
ich hab eigentlich vor, alle Attachments eine Mail DB zu lösen.

Dabei bin ich dann auf diesen Beitrag gestoßen
(http://atnotes.de/index.php?topic=22415.0)
der Code dafür sieht so aus:
Code
Dim doc As NotesDocument
Dim rtitem As Variant
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  Forall o In rtitem.EmbeddedObjects
    If ( o.Type = EMBED_ATTACHMENT ) Then
      Call o.ExtractFile( "c:\samples\" & o.Source )
      Call o.Remove
      Call doc.Save( False, True )
    End If
  End Forall
End If

, und wollte dies auch gleich mal testen. Hab auch das Beispiel in der Hilfe DB gefunden und versucht dieses umzusetzen.
Jedoch gibt er immer bei der Forall Schleife eine Type Mismatch Fehlermeldung aus. Nun ist aber noch die Frage, was ist eigentlich mit dem kleinen "o" ? Es wird nirgends gesetzt noch definiert. Kann mir da jemand weiterhelfen?
mfg
 

Offline scipio

  • Junior Mitglied
  • **
  • Beiträge: 57
  • Ich liebe dieses Forum!
Re: Attachment aus einer Mail DB lösen
« Antwort #1 am: 16.12.05 - 20:03:08 »
Forall o In rtitem.EmbeddedObjects 'Mache mit allen Objekten des RichTextItems

o = eingebettete Objekte

If ( o.Type = EMBED_ATTACHMENT ) Then 'Wenn o dann ein Attachment ist

dann

- auf Laufwerk C lösen
- entfernen
- Doc speichern

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Attachment aus einer Mail DB lösen
« Antwort #2 am: 16.12.05 - 21:27:06 »
Wo genau kommt die Fehlermeldung. Lass mal den Debugger zu Wort kommen. Da siehst du dann wo's knallt.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attachment aus einer Mail DB lösen
« Antwort #3 am: 16.12.05 - 22:36:35 »
@Axel: Knallen wird es vermutlich in dem Moment, wo ein RTI ohne embedded objects angefasst wird.
Forall o In rtitem.EmbeddedObjects
kann man nur verwenden, wenn rtitem.EmbeddedObjects nicht empty ist.
Weitere Fehlermöglichkeit, die nicht abgeprüft wirde
Es wird versucht, das Item "Body" zu instantiieren. Dieses muss nicht vorhanden sein. Es wäre hier noch auf rtitem Is Nothing zu prüfen (die Fehlermeldung wäre ohne die Prüfung aber "Object variable not set", ich erwähne das nur der Vollständigkeit halber).

@scipio: "o" ist ein völlig frei wählbarer Bezeichner für die Elemente, die in einer Forall-Schleife durchlaufen werden soll. Das muss also nicht zwangläufig ein eingebettetes Objekt sein und kann natürlich statt "o" auch "Hurz" heissen.

Bernhard

Offline scipio

  • Junior Mitglied
  • **
  • Beiträge: 57
  • Ich liebe dieses Forum!
Re: Attachment aus einer Mail DB lösen
« Antwort #4 am: 17.12.05 - 11:07:13 »
Man kann das o auch hurz nennen? Ist ja erstaunlich.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attachment aus einer Mail DB lösen
« Antwort #5 am: 17.12.05 - 12:52:32 »
Aus der DesignerHelp:
Zitat
Hurz is a reference variable (refVar) for the array, list, or collection element. In the body of the ForAll loop, you use refVar to refer to each element of the array, list, or collection named by container. refVar can't have a data type suffix character appended.

Bernhard  ;D

Offline sculer

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: Attachment aus einer Mail DB lösen
« Antwort #6 am: 20.12.05 - 18:21:30 »
Hallo,
also  dass was der "Koehlerbv" angesprochen hat scheint wohl der Grund zu sein.

Zitat
@Axel: Knallen wird es vermutlich in dem Moment, wo ein RTI ohne embedded objects angefasst wird.
Forall o In rtitem.EmbeddedObjects
kann man nur verwenden, wenn rtitem.EmbeddedObjects nicht empty ist.
Weitere Fehlermöglichkeit, die nicht abgeprüft wirde
Es wird versucht, das Item "Body" zu instantiieren. Dieses muss nicht vorhanden sein. Es wäre hier noch auf rtitem Is Nothing zu prüfen (die Fehlermeldung wäre ohne die Prüfung aber "Object variable not set", ich erwähne das nur der Vollständigkeit halber).

wenn ich da nur Dokumente habe, welche einen Anhang besitzen, läuft das Script einfach durch.

Nun hab ich aber noch die Frage, wie stell ich genau die IF Bedienung`?

der Vorschlag funktioniert ja so nicht, da rtitem ja schon existiert.
rtitem Is Nothing ??

Ich hatte nun mal die Idee
Code
If rtitem.EmbeddedObjects Is Nothing Then
funktioniert jedoch nicht.

Kann bzw. weiß jemand genau mit welchem Befehl und welcher Syntax dies da stehen muss?

Danke
mfg

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attachment aus einer Mail DB lösen
« Antwort #7 am: 20.12.05 - 18:35:46 »
NotesRichTextItem.EmbeddedObjects gibt ein Array zurück. Wird nichts zurückgegeben, sind sowohl Isarray falsch als auch Isempty wahr.

HTH,
Bernhard

Offline sculer

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: Attachment aus einer Mail DB lösen
« Antwort #8 am: 20.12.05 - 18:51:50 »
Hallo,

danke erst einmal für die schnelle Antwort

Mein script sieht nun so aus:
Code
	Do Until doc Is Nothing
		Set rtitem = doc.GetFirstItem( "Body" )
		If ( rtitem.Type = RICHTEXT ) Then
			If rtitem.EmbeddedObjects Is array Then
				Forall o In rtitem.EmbeddedObjects
					If ( o.Type = EMBED_ATTACHMENT ) Then
						Call o.ExtractFile( "c:\samples\" & o.Source )
					'Call o.Remove
						Call doc.Save( False, True )
					End If
				End Forall
			End If
		End If
		Set doc=view.GetNextDocument(doc)
	Loop

Jedoch sagt er mir nun hier:
Code
If rtitem.EmbeddedObjects Is array Then

Type mismatch fehler

Ich hab es auch mit dem
"Is empty" probiert
 => kam genau die gleiche Fehlermeldung.

Wenn dies aber ein Array ist, sollte dies doch aber funktionieren1 ??
Vielleicht noch ein Tipp!

DAnke
mfg

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attachment aus einer Mail DB lösen
« Antwort #9 am: 20.12.05 - 19:01:49 »
Hast Du eigentlich eine DesignerHelp bzw. benutzt diese ?  ;)

If Isarray (rtitem.EmbeddedObjects) Then ...
oder
If Not (Isempty (rtitem.EmbeddedObjects)) Then

HTH,
Bernhard

Offline sculer

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: Attachment aus einer Mail DB lösen
« Antwort #10 am: 20.12.05 - 19:30:01 »
Okay, dies erklärt einiges!
:)

Ja, ich benutze diesen schon, jedoch hab ich halt eben gedacht, dass es die gleiche Syntax wie "is Nothing" ist und hab da auch nicht weiter nachgeschaut.

Ich hatte vielleicht noch eher etwas in die richtung gedacht, dass es kolissioninen zw. rtitem und so kommt und nicht unbedingt an die Syntax.

Hm, aber ich danke dir.

PS: Die Befehle hab ich bisher auch noch nie gebraucht. Vielleicht ein kleiner Trost. :)
Sorry noch einmal
und danke

mfg

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz