Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: masterste2000 am 08.02.12 - 14:44:20
-
Hallo Zusammen,
ich hoffe Ihr könnt mit helfen.
Alles bezieht sich auf eine und die selbe Datenbank.
Ich habe ein Dokument und in diesem ist ein RTF mit einem PDF-Dokument.
Dieses PDF-Dokument möchte ich jetzt beim öffnen eines neuen Dokuments in ein RTF in dem neuen Dokument kopieren.
Wenn ich mit dem Debugger das Script kontrolliere kann ich das PDF-Dokument im Item greifen, aber ich bekomme es nicht in das neue Dokument / RTF kopiert!
Hier mal der Code:
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim view As NotesView
Dim doc As NotesDocument
Set view = db.GetView( "(PDF_Dokumente)" )
Set doc = view.GetFirstDocument
'Bis jetzt hat es das Dokument mit dem PDF-Dokument an doc übergeben.
Dim rtitem As Variant
Set rtitem = doc.GetFirstItem( "Dienstreisepdf" )
'Hier wird rtitem das Item vom RTF übergeben
---> Und hier hänge ich wie bekomme ich das Item mit dem PDF in das des RTF Feld des neuen Dokuments kopiert??????
-
Deja vu?
http://atnotes.de/index.php/topic,53672.msg346352.html
-
Nee, Martin, das ist ein bisschen was anderes, obwohl die Antwort (NotesUIDocument.ImportItem) die selbe sein KANN.
Wenn man das nicht über die Zwischenablage machen will, dann MUSS man
- über rtitem.EmbeddedObjects iterieren
- prüfen, ob es sich um ein Object vom Type ATTACHMENT handelt
- wenn ja: Extrahieren in einen Temp- Pfad (am besten über Environ( "Temp" ) ermitteln)
- Attachment wieder attachen
-
Hallo danke für die schnellen Antworten, aber
NotesUIDocument.ImportItem
gibt es noch nicht in LoNo 7 oder doch?
Hi Martin wie bzw. mit welcher Klasse kann ich in das UIDOC das Attachment anhängen.
-
... wie bzw. mit welcher Klasse kann ich in das UIDOC das Attachment anhängen.
Über Frontend-Klassen geht da garnichts. Schau dir mal die Methode NotesDocument.CopyItem an. Damit sollte es gehen.
Axel
-
Wobei ImportItem ja undokumentiert ist ...
-
Über Frontend-Klassen geht da garnichts.
Doch - via Copy & Paste, was durchaus auch in der Praxis eingesetzt wird.
Bernhard
-
Du hast recht Bernhard.
Da ich vieles über's Backend mache, sind mir diese Methoden noch nicht untergekommen.
Axel
-
Wenn es sauberer geht, versucht man natürlich auch, einen solchen Stunt zu vermeiden. Aber wenn beispielsweise ein RTF vorbelegt werden soll, jedoch ein Speichern allein dem User überlassen bleiben soll, dann bleibt einem nichts anderes (versionsunabhängiges).
Bernhard
-
Guten Morgen,
mit soviel Antworten hätte ich jetzt nicht gerechnet.
Bernhard @all könnt ihr mir mal ein Beispiel Skript hier einstellen.
Danke!
-
fertigen Code gibts hier selten... ::)
wenn du aber an deinen bestehenden Code noch folgende 5 Zeilen anhängst, sollte das Feld im Backend kopiert werden und das neue Dok. aufgehen.
dim newDoc as new NotesDocument(db)
dim newRti as new NotesRichtextItem(newDoc, "body")
call newRti.appendRtItem( rtItem)
call newRti.update()
call workspace.editDocument(true, newDoc)
das Ganze musst du aber in einen "Neu"-Button/Agent auslagern und kannst nicht im QueryOpen machen, da du hier noch kein Doc zur Verfügung hast (und im postOpen ist es zu spät um den Richtext zu ändern, außer du verwendest das undokumentierte uiDoc.importItem() dann wärs sogar nur noch eine Zeile die dir in deinem Code aus dem ersten Post fehlt)
oder du machst noch einen Reopen
Gruß
Roland