Autor Thema: Agent zum auslagern von Attachmants ins Filsystem  (Gelesen 4200 mal)

Offline sylli1908

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Weiblich
Hallo Notes - Könner,

ich bastle einen Agenten der nicht will wie er soll.
Er soll Bilder, die als Anhang an den Dokumenten hängen ins Filesystem speichern und aus der Datenbank löschen, da die Datenbank zu gross geworden ist. Anhang heisst das RTF in dem der Anhang steckt. Nach C:\ soll das ganze verschoben werden falls es ein jpg ist.

so sieht das ganze aus:

Sub Initialize
   Dim Pfad As String
   Dim doc As NotesDocument
   Dim obj As NotesEmbeddedObject   
   Dim rtitem As Variant
   
   Pfad = "C:\"
   Set rtitem = doc.GetFirstItem( "Anhang" )
   Forall o In rtitem.EmbeddedObjects
      If (o.Type = EMBED_ATTACHMENT) Then
         If Ucase(Right(o.Source, 4)) = Ucase(".jpg") Then
            Call o.ExtractFile(Pfad & o.Source)
         End If
      End If
   End Forall    
End Sub

Der Debugger sagt immer: "Object Variable not set? an der
Stelle mit dem Forall.
Wäre für eure Hilfe dankbar. Sylli

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #1 am: 05.05.08 - 14:18:16 »
Das Dokument besitzt kein Item mit dem Namen "Anhang".
Im übrigen musst du rtItem schon als NotesRichTextItem und nicht als Variant deklarieren.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline sylli1908

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Weiblich
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #2 am: 05.05.08 - 14:25:57 »
habe ich geändert.  Sieht jetzt so aus:

Sub Initialize
   Dim Pfad As String
   Pfad = "C:\"
   Dim doc As NotesDocument
   Dim obj As NotesEmbeddedObject   
   Dim rtitem As NotesRichTextItem
   
   Set rtitem = doc.GetFirstItem( "Body" )
   Forall o In rtitem.EmbeddedObjects
      If (o.Type = EMBED_ATTACHMENT) Then ' ist Dateianhang?
         If Ucase(Right(o.Source, 4)) = Ucase(".jpg") Then ' ist Dateiendung jpg?
            Call o.ExtractFile(Pfad & o.Source) ' abhängen
         End If
      End If
   End Forall    
End Sub


Fehlermeldung ist aber die gleiche. Mist.

klaussal

  • Gast
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #3 am: 05.05.08 - 14:34:36 »
Doc ist nicht gesetzt.

klaussal

  • Gast
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #4 am: 05.05.08 - 14:47:17 »
Code
Sub Initialize
	
	Dim Pfad As String 
	Pfad = "C:\" 
	Dim doc As NotesDocument
	Dim obj As NotesEmbeddedObject   
	Dim rtitem As NotesRichTextItem
	Dim collection As NotesDocumentCollection
	Dim db As NotesDatabase
	Dim session As New NotesSession
	
	Set db = session.CurrentDatabase
	Set collection = db.UnprocessedDocuments
	Set doc = collection.GetFirstDocument()
	While Not(doc Is Nothing)
		Set rtitem = doc.GetFirstItem( "Body" )
		Forall o In rtitem.EmbeddedObjects
			If (o.Type = EMBED_ATTACHMENT) Then ' ist Dateianhang? 
				If Ucase(Right(o.Source, 4)) = Ucase(".jpg") Then ' ist Dateiendung jpg? 
					Call o.ExtractFile(Pfad & o.Source) ' abhängen 
				End If 
			End If 
		End Forall    
		Set doc = collection.GetNextDocument(doc)
	Wend
	
End Sub
« Letzte Änderung: 05.05.08 - 14:49:05 von klauss »

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #5 am: 05.05.08 - 16:21:39 »
Der Debugger sagt immer: "Object Variable not set? an der
Stelle mit dem Forall.
Wäre für eure Hilfe dankbar. Sylli

Kann es sein, dass kein Anhang vorhanden ist?

Schau mal hier: http://atnotes.de/index.php?topic=40411.msg258521#msg258521

Da findest du eine einfache Möglichkeit, wie du prüfen kannst, ob ein Dokument Anhänge enthält oder nicht.

Axel
« Letzte Änderung: 05.05.08 - 19:20:20 von Axel »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline sylli1908

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Weiblich
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #6 am: 08.05.08 - 08:35:22 »
Nach langem Gehirnjogging hat diese Variante zum Erfolg geführt. Allerdings war ich als Notes-Anfänger darauf angewiesen viele Bausteine aus dem Forum zusammenzubasteln.
Danke Euch!

Sub Initialize
   Dim doc As NotesDocument
   Dim rtitem As Variant
   Dim fileCount As Integer
   Dim session As New Notessession
   Dim db As Notesdatabase
   Dim view As NotesView
   
   
   Set db = session.CurrentDatabase
   Set zieldb=session.getdatabase("cn=servername","entwicklung/Anhang.nsf",False)
   Set view=zieldb.getview("Dokumente")
   
   Const MAX = 1
   fileCount = 0   
'...set value of doc...
   Set doc = view.GetFirstDocument
   While Not doc Is Nothing   
      Set rtitem = doc.GetFirstItem( "Anhang" )
      If ( rtitem.Type = RICHTEXT ) Then
         Forall o In rtitem.EmbeddedObjects
            If ( o.Type = EMBED_ATTACHMENT )   And ( o.FileSize > MAX ) Then
               fileCount = fileCount + 1
               Call o.ExtractFile ( "c:\temp\notes1" & Cstr(fileCount) )
               Call o.Remove
               Call doc.Save( True, True )
            End If
         End Forall
      End If   
      Set doc = view.getnextdocument(doc)
   Wend
   
End Sub

Offline Dr.Domino

  • Senior Mitglied
  • ****
  • Beiträge: 287
  • Geschlecht: Männlich
  • LN since 1996 ...
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #7 am: 23.06.08 - 15:07:42 »
Hallo,

das ist ja schön und gut so (und ist auch in der Designerhilfe so zu finden), die Frage, die
ich dazu hätte ist, ob das bei Dir/Euch auch bei allen Mails funktioniert?
Erhalte ich eine Notes-Mail, dann ist das alles super, da der Anhang anscheinend ordentlich
im RTF-Feld drin ist, wie sieht es aber aus, wenn die Mail z.B. aus dem Internet oder lokal
per Blat oä kommt?
Dann habe ich da ein Multipart MIME mit base64 "Attachments" ... die werden zwar anständig
im Client angezeigt aber durch diese Code leider nicht "detached/kopiert".
Kennt jemand das Problem oder hat sogar eine Lösung zur Hand?

Vielen Dank im Voraus!
VG,
Markus

IBM Domino 9.0.1, Lotus Domino 8.5.3 (QuickR), CentOS 6, Win64)

Offline Dr.Domino

  • Senior Mitglied
  • ****
  • Beiträge: 287
  • Geschlecht: Männlich
  • LN since 1996 ...
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #8 am: 23.06.08 - 15:12:42 »
Anmerkung: wenn ich diese Mails dann nochmal an "den Agenten" weiterleite, dann wird
auch das Attachment ordentlich verwurstet ...
VG,
Markus

IBM Domino 9.0.1, Lotus Domino 8.5.3 (QuickR), CentOS 6, Win64)

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #9 am: 23.06.08 - 15:13:47 »
Ich glaube im Mail-Template von Openntf.org ist eine Exportfunktion für Mime enthalten.

http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/OpenNTF%20Mail%20Experience


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

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #10 am: 23.06.08 - 15:20:15 »
Erhalte ich eine Notes-Mail, dann ist das alles super, da der Anhang anscheinend ordentlich
im RTF-Feld drin ist, wie sieht es aber aus, wenn die Mail z.B. aus dem Internet oder lokal
per Blat oä kommt?
Dann habe ich da ein Multipart MIME mit base64 "Attachments" ... die werden zwar anständig
im Client angezeigt aber durch diese Code leider nicht "detached/kopiert".
Kennt jemand das Problem oder hat sogar eine Lösung zur Hand?
Ja, nein.

Einstellen, dass Internet-Mails vom Router ins Notes-Format konvertiert werden. Hat halt ein paar Nebenwirkungen.
Code aufbohren, dass er auch mit MIME-Mails umgehen kann.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Dr.Domino

  • Senior Mitglied
  • ****
  • Beiträge: 287
  • Geschlecht: Männlich
  • LN since 1996 ...
Re: Agent zum auslagern von Attachmants ins Filsystem
« Antwort #11 am: 23.06.08 - 16:24:02 »
Schade ... eine "Stumpf ist Trumpf"-Wandlung MIME->RTF funzt ned :-(

Set doc = session.documentcontext
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type <> RICHTEXT ) Then
   Call rtitem.appendtext(" ")
   Call doc.save(True, True)
End If
Set doc = session.documentcontext

Da krieg ich nen kalten

06/23/2008 04:16:27 PM,
       MIME-CD failed at 06/23/2008 04:16:27 PM: Invalid or nonexistent document,

für zurück :-).

VG,
Markus

IBM Domino 9.0.1, Lotus Domino 8.5.3 (QuickR), CentOS 6, Win64)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz