Autor Thema: Anhang von einem Dokument in ein anders kopieren  (Gelesen 2858 mal)

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Anhang von einem Dokument in ein anders kopieren
« am: 21.03.05 - 16:37:16 »
Hallo Leute,

ich habe ein Dokument mit 4 Bodyfeldern. Irgendwo in diesem Bodywirrwarr steht etwas Text und ein Anhang.
Mein Ziel ist den Anhang in ein rtf eines neuen Dokumentes zu kopieren.
Bei meinen Versuchen bin ich auf 2 Probleme gestoßen:

1.) Ich habe es mit dem folgendem Code probiert:
strTemp = Environ("Temp") +"\c.daten.notes\"
Set rtItem = New NotesRichTextItem( docNew , "Body" )
Forall x In doc.EmbeddedObjects
   If x.Type = EMBED_ATTACHMENT Then
      Call x.ExtractFile( strTemp + x.Source )
      Call rtItem.EmbedObject( EMBED_ATTACHMENT, "" , strTemp + x.Source )
   End If
End Forall
Beim Forall kommt aber die Fehlermeldung Type mismatch. In der Hilfe wird aber die Kombination Forall und doc.EmbeddedObjects verwendet. ???

2.) Muss ich echt den Anhang lösen um ihn in ein anderes Dokument zu kopieren oder gibt es eine einfachere Lösung?

lG
-daniel
« Letzte Änderung: 21.03.05 - 17:50:51 von rar »
†090620141300

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #1 am: 21.03.05 - 16:39:57 »
Nimm NotesItem.CopyItemToDocument (notesDocument, newName$). Dann brauchst Du Dich um die Attachments nicht mehr zu kümmern, wenn welche drin sind.

HTH,
Bernhard

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #2 am: 21.03.05 - 16:52:00 »
Ich habe aber 4 Bodyfelder, von denen ich nur das eine mit dem Anhang brauch. Und davon nur das Attachement (ohne Text)...

Wenn ich das NotesItem befülle, brauch ich ja das GetFirstItem.
Ein GetNextItem gibt es doch nicht?!
Irgendwie läufts heut bei mir nicht  :-\

-daniel
†090620141300

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #3 am: 21.03.05 - 16:57:37 »
Sorry, dann habe ich Dich mistverstanden. Dann musst Du doch den Anhang lösen - eines der Items spearat wirst Du nicht via LS greifen können.

Bernhard

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #4 am: 21.03.05 - 17:06:02 »
Danke. Somit ist die 2te Frage beantwortet.

Wenn ich aber den Anhang lösen möchte, stoß ich auf den blöden Type mismatch beim Forall....
Wie kann ich denn sonst noch auf den Anhang zugreifen?
†090620141300

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #5 am: 21.03.05 - 17:11:58 »
Daniel, was sagt denn der Debugger? Und vielleicht fragst Du wie im Beispiel der Hilfe auch noch nach HasEmbedded ab
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #6 am: 21.03.05 - 17:22:05 »

Im doc sehe ich unter EmbeddedObjects kein Inhalt obwohl doc.HasEmbedded True ist. Das $File Feld ist aber befüllt.
Mehr als ein Type mismach kommt beim Debugger nicht raus.

Hier ist der komplette Code:
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim coll As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim docTmp As NotesDocument
   Dim docNew As NotesDocument
   Dim rtitem As NotesRichTextItem
   Dim strTemp As String
   
   strTemp = Environ("Temp")   +"\c.daten.notes\"
   Set db = session.CurrentDatabase
   Set coll = db.UnprocessedDocuments
   Set doc = coll.GetFirstDocument()
   Do While Not doc Is Nothing
      Set docTmp = coll.GetNextDocument(doc)
      Set docNew = db.CreateDocument()
      docNew.Form = "mKonto"
      If doc.HasEmbedded Then
         Set rtItem = New NotesRichTextItem( docNew , "Body" )
         Forall x In doc.EmbeddedObjects
            If x.Type = EMBED_ATTACHMENT Then
               Call x.ExtractFile( strTemp + x.Source )
               Call rtItem.EmbedObject( EMBED_ATTACHMENT, "" , strTemp + x.Source )
            End If
         End Forall
      End If
      Call docNew.Save(True,True)
      'call doc.Remove(true)
      Set doc = docTmp
   Loop
   
†090620141300

Driri

  • Gast
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #7 am: 21.03.05 - 17:29:43 »
Zitat
Forall x In doc.EmbeddedObjects

Das ist wohl der Fehler. Korrekt wäre IMO :

Forall x in rtitem.EmbeddedObjects

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #8 am: 21.03.05 - 17:33:21 »
Code
Set rtItem = New NotesRichTextItem( docNew , "Body" )

Das ist auch nicht richtig - damit erzeugst Du das fünfte Body-Item. Du musst schon GetFirstItem nehmen. Notes findet dann die Attachments schon.

Bernhard

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #9 am: 21.03.05 - 17:50:17 »
 :) DANKE  :)
Ich habs.
Mit dem GetFirstItem hat Notes die Attachements gefunden und mit rtitem.EmbeddedObjects geht das Forall auch.
Mich wundert warum es mit doc.EmbeddedObject nicht funzt. Vielleicht ein Bug ?!
 
Set rtItem = New NotesRichTextItem( docNew , "Body" )
passt aber Bernhard. Das ist das einzige Bodyfeld in dem neuen Dokument.

Vielen Dank euch allen. Der Abend ist gerettet  ;D
lG
-daniel
†090620141300

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Anhang von einem Dokument in ein anders kopieren
« Antwort #10 am: 21.03.05 - 17:51:56 »
NotesDocument.EmbeddedObjects geht schon - hat aber mit Attachments nichts zu tun !

Daher gab es dann auch den Type mismatch.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz