Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Hendrik T. am 13.09.12 - 12:25:14

Titel: Objekte kopieren
Beitrag 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
Titel: Re: Objekte kopieren
Beitrag von: ascabg am 13.09.12 - 13:19:14
Hallo,

Ohne zu wissen wie Du die Anhaenge 'kopierst' wird es schwer sein etwas ueber etwaige Fehlerquellen zu sagen.


Andreas
Titel: Re: Objekte kopieren
Beitrag von: Hendrik T. am 13.09.12 - 13:47:29
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
Titel: Re: Objekte kopieren
Beitrag von: ascabg am 13.09.12 - 14:02:34
Schon mal die Methode AppendRTItem der NotesRichTextItem-Klasse angesehen?


Andreas
Titel: Re: Objekte kopieren
Beitrag von: koehlerbv am 13.09.12 - 14:05:57
NotesItem.CopyToDatabase tut in diesem Falle noch einfacher.

HTH,
Bernhard
Titel: Re: Objekte kopieren
Beitrag von: ascabg am 13.09.12 - 14:07:26
@Bernhard
Kleine Frage

Zitat
NotesItem.CopyToDatabase
Verschrieben oder eine von den undokumentierten Funktionen (Methoden) einer Klasse.


Andreas
Titel: Re: Objekte kopieren
Beitrag von: koehlerbv am 13.09.12 - 14:12:06
Verschrieben  ::)

NotesItem.CopyItemToDocument

Danke für den Hinweis, Andreas!

Bernhard
Titel: Re: Objekte kopieren
Beitrag von: Hendrik T. am 13.09.12 - 14:16:45
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.
Titel: Re: Objekte kopieren
Beitrag von: Tode am 13.09.12 - 14:41:19
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
Titel: Re: Objekte kopieren
Beitrag von: pram am 13.09.12 - 14:42:10
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
Titel: Re: Objekte kopieren
Beitrag von: Mitch am 13.09.12 - 15:39:00
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