Lotus Notes / Domino 10 > ND10: Entwicklung
Foto per Agent kopieren (Richtext)
Peter Klett:
--- Code: ---Forall item In quelldoc
Select Case Lcase (item.Name)
Case "$file", "foto"
'nix
Case Else
Call quelldoc.RemoveItem (item.Name)
End Select
End Forall
Call quelldoc.CopyAllItems (zieldoc)
--- Ende Code ---
Natürlich darf quelldoc dann nicht gespeichert werden, sonst ist es kaputt. Ggf. müssten die alten Felder im zieldoc vorher noch gelöscht werden.
Ich habe so etwas schon einmal genutzt, allerdings innerhalb der gleichen Datenbank. Ob das datenbankübergreifend funktioniert, muss ausprobiert werden. Habe witzigerweise heute exakt die gleiche Themenstellung in einem anderen Kontext, wenn ich irgendwelche Erkenntnisse daraus ziehe, werde ich das hier schreiben
Werner Götz:
Ein Richtext-Item referenziert die darin enthaltenen Anhänge nur, diese Referenzen werden beim bloßen Kopieren des Items (bei Codevariante 1 oben) nicht mitkopiert.
Zu den Vorschlägen bzgl. Kopieren der Items $FILE: Das klappt halt nur, wenn man nicht mehrere Richtextitems mit Dateianhängen im Quelldokument hat. Sonst kopiert man auch diese Anhänge mit.
Ich mache das Ganze an zig Stellen mit dem Codevorschlag 2 von oben, also mit AppendRTItem
Das klappt eigentlich immer.
basertitem.Compact sollte aus meiner Sicht aber vor dem basertitem.Update aufgerufen werden.
-Werner
eknori:
Ich hatte das Thema vor Jahren mal auf dem Tisch. Nach viel Rumprobieren habe ich letzlich folgene Lösung implementiert
--- Code: --- Set rtiSource = attDoc.GetFirstItem( "fill_att" )
If ( rtiTarget.Type = RICHTEXT And rtiSource.Type = RICHTEXT ) Then
Set rtnav = rtiSource.CreateNavigator
If rtnav.FindFirstElement(RTELEM_TYPE_FILEATTACHMENT) Then
Do
Set att = rtnav.GetElement()
filepath = GetSystemTempFolder & "/" & att.Source
Call att.ExtractFile(filepath)
Set att = rtiTarget.EmbedObject ( EMBED_ATTACHMENT, "", filepath)
Kill filepath
Loop While rtnav.FindNextElement()
End If
End If
--- Ende Code ---
Also Zwischenspeichern von Anhängen und sauber wieder an das Zieldokument anhängen.
Peter Klett:
Habe beide Methoden ausprobiert, sowohl meine mit dem CopyAllItems als auch die von Werner mit AppendRTItem mit Compact und Update. Werners gefällt mir besser ;)
eknoris Methode passt in meinem Umfeld nicht, da ich nicht auf die Platte zugreifen darf.
<OT>
Ein Agent auf einem Server von einer REST-Schnittstelle aufgerufen darf das nicht (irgendwas mit restricted operation). Die Alternativlösung von IBM, den Agenten über eine URL aufzurufen, hatte ich vor Monaten mal ausprobiert und funktioniert. Es klingt nach einem voll durchdachten Sicherheits-Konzept, dass man beim Server den http-Task aktivieren muss, um auf die Platte zugreifen zu können. Wir ziehen es da vor, den http-Task wegzulassen und dann eben Methoden zu suchen, die keinen Plattenzugriff benötigen (in dem Fall von damals wird eine zu erstellende Datei dann eben per DXL in ein Dokument angehängt, ohne Zugriff auf die Platte). Kein weiterer Kommentar ...
</OT>
PromITheus:
Danke schonmal für die vielen spannenden Vorschläge :)
@Werner: Ich verstehen deine Vorgehensweise noch nicht!?
Auch wenn ich mein update und compact tausche funktioniert mein Code nicht.
$File enthält also noch die Bildatei, das ist verständlich. Da im Quelldokument zwei Anhänge hängen, sollte ich $File ja nicht komplett rüber kopieren?
Und selbst wenn ich $File als Richtextitem komplett anhängen (AppendRTitem) möchte, sperrt sich Notes (Type Mismatch) ???
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln