Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Hendrik T. am 13.09.12 - 12:25:14
-
Leidiges Thema Rich Text Felder...
Hintergrund: Gibt bei uns eine Datenbank, die bestimmte RT Felder enthält, die die Sachbearbeiter nutzem um Anhänge wie pdfs o.ä. zu speichern. Diese Felder werden außerdem in einer Extra Maske achiviert, sprich kopiert.
Problem: Wenn ich aus dem eigentlichen Feld die Dateien lösche und im Archiv die noch vorhandenen Anhänge öffnen möchte, findet er die Datei nicht. Er kopiert also offensichtlich nur einen Verweis zum Attachment und nicht die Datei als ganze.
Wie aber kriege ich das hin? also einfach das Attachment greifen, die Datei in den Arbeitsspeicher laden und neu in das Archivfeld fügen. Ich habe sehr viel ausprobiert und gesucht, es haut einfach nicht hin. Oder übersehe ich was elementares?
Vielen Dank und freundliche Grüße
Hendrik
-
Hallo,
Ohne zu wissen wie Du die Anhaenge 'kopierst' wird es schwer sein etwas ueber etwaige Fehlerquellen zu sagen.
Andreas
-
Bisher habe ich es so versucht:
Set item=doc.getfirstitem("H_doc_10")
Set xitem=doc.getfirstitem("H_doc")
namen=xitem.EmbeddedObject
y=0
x=Ubound(namen)
Do While y<=x
Set datei = xitem.GetEmbeddedObject(namen(y).name)
Call datei.Activate(False)
Set file_old = item.EmbedObject(1454,"",datei.Name)
y=y+1
Loop
-
Schon mal die Methode AppendRTItem der NotesRichTextItem-Klasse angesehen?
Andreas
-
NotesItem.CopyToDatabase tut in diesem Falle noch einfacher.
HTH,
Bernhard
-
@Bernhard
Kleine Frage
NotesItem.CopyToDatabase
Verschrieben oder eine von den undokumentierten Funktionen (Methoden) einer Klasse.
Andreas
-
Verschrieben ::)
NotesItem.CopyItemToDocument
Danke für den Hinweis, Andreas!
Bernhard
-
Schon mal die Methode AppendRTItem der NotesRichTextItem-Klasse angesehen?
Andreas
die Methode hatte ich erst. Die bringt aber nichts, da sie die Datei nicht wirklich kopiert. Solange im ursprünglichen Feld das Teil noch liegt funktioniert das wunderbar. Aber danach nicht mehr.
-
Evtl. bringt RenderToRichtext der NotesDocument- Klasse was, u.U. könntest Du auch versuchen, das $File ins neue Dokument zu kopieren (zusätzlich).
Am sichersten ist sicherlich, das kurzfristig zu detachen (in Deinem obigen Code statt "datei.Activate" (was soll das bringen, das müsste eigentlich in Deinem Fall sogar einen Fehler werfen, laut Hilfe: This method raises an error if you invoke it on a NotesEmbeddedObject that is a file attachment.) datei.ExtractFile(irgendeintempordner) und item.EmbedObject(1454,"",irgendeintempordner)
aufräumen nicht vergessen: kill irgendeintempordner
-
Kann ich nicht bestätigen...
Copyitemtodocument kopiert automatisch alle zum Richtext gehörenden $FILE items.
Man muss das Zieldokument dann speichern. Dabei bekommen alle Files eine neue Objekt - id (sieht man in den Dokumenteigenschaften im $FILE )
D. H. Sie werden kopiert. Wenn man allerdings nach dem Kopieren im Quelldokument die Attachments entfernt und die Kopie erst dann speichert, kommt es zu dem von dir beschriebenen Effekt.
(Symbol im Richtext und beim Anklicken kommt eine Fehlermeldung)
Gruß Roland
-
Heyho,
interessant, dass du das mit zwei unterschiedlichen Dokumenten hast. Ich kenne das nur, wenn man innerhalb eines einzigen Dokumenten RTIs kopiert (siehe hier: http://atnotes.de/index.php/topic,51945.0.html ).
Dazu gibt es auch ein offizielles IBM-Statement: https://www-304.ibm.com/support/docview.wss?uid=swg21200321&wv=1
Vielleicht hilft dir der IBM-Workaround ja trotzdem weiter.
Gruß,
Mitch