Domino 9 und frühere Versionen > Entwicklung
Mehrere Anhänge in Dokument verarbeiten
koehlerbv:
Da es sich um RTFs handelt: Erst speichern, damit das RTF auch wirklich im Zugriff steht ...
Bernhard
Glombi:
Ich würde es so machen - es ist die sicherste Methode, dass die Attachments vollständig herrüberkommen (insb. wenn es mehrere RT Items gleichen Namen gibt).
Kopiere das ganze Dokument N mal in die andere Datenbank (N = Anzahl der Anhänge). Dann holst Du Dir jeweils in den Dokumente alle Attachments, die gelöscht werden sollen. Und zwar über den Namen des Anhangs, der in einem N-dim. Array steht.
Das geht alles in der Klasse NotesEmbeddedObject.
Bsp.:
Dim doc As NotesDocument
Dim rtitem As Variant
Dim object As NotesEmbeddedObject
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
Set object = rtitem.GetEmbeddedObject( "City picture" )
Call object.Remove
Call doc.Save( True, True )
End If
Der Vorteil dieser Methode ist wie gesagt: Das Dokument wird vollständig übernommen. Du musst keine Verrenkungen machen mit lösen und neu anhängen.
Andreas
Semeaphoros:
Passiert alles im Backend, damit ist der Zugriff nicht wirklich ein Problem. Hab grad mal in was ähnlichem nachgeschaut, da geht es ohne Speichern. Allerdings werden dort die Attachements nur über RTF analysiert und dann übers Dokument in Abhängigkeit von Bedingungen entfernt, mit dem unschönen Nebeneffekt, dass das Icon stehen bleibt. Aufgrund von diesem Beispiel würde ich jetzt mal erwarten, dass es ohne Speicher geht.
tomtom62:
Es gibt erste Fortschritte zu vermelden.
Ich bin dabei einen Agenten zu schreiben, der
1. Alle Dokumente der Quelldatenbank durchgeht und dabei im Ziel je eine Kopie des Dokuments pro Anhang zu erzeugen. Also wenn ein Dokument fünf Anhänge hat, dann werden in der Zieldatenbank fünf gleiche Kopien des Dokuments erzeugt.
2. Aus verfahrenstechnischen Gründen muss der Agent in der Zieldatenbank laufen und nicht in der Quelle. Deshalb kann ich scheinbar die Eigenschaft UnprocessedDocuments der (Quell) Collection nicht nutzen. Muss derzeit immer alle Dokumente durchgehen und im Ziel voher alle löschen.
3. Da ich, dank der Suchfunktion im Forum ;) ein Stück Source gefunden habe, das die Anhänge kopiert, werde ich es scheinbar hinbekommen, während des Kopierens nur den benötigten Anhang zu kopieren und die anderen einfach zu übergehen. Ich hatte einfach noch nicht genug Zeit heute, deshalb kann ich nichts Genaues vermelden.
3a. Wenn das geht, dann wird es mit einmal Speichern pro Dokument funktionieren, die andere Variante ist, Dokument kopieren und dann in der Kopie die Anhänge entfernen. Das geht aber wohl nicht ohne vorheriges Speichern.
Was noch unschön ist: Ich muss immer alle Dokumente der Quelle durchgehen. Gibt es da eine andere Möglichkeit ?. Es kann vorkommen, das nicht nur neue Dokumente hinzukommen, es können auch bestehende verändert werden. Also benötige ich ein sicheres Kriterium der Änderung..
Das Andere ist: Die Quelle enthält berechnete Felder, die u.a. letzte Änderung bzw. letzten Bearbeiter speichern. Wenn ich diese Felder kopiere, dann wird im Ziel automatisch das Datum eingefügt, an den der Agent das Dokument erzeugt hat. Und das obwohl diese Felder im Ziel nicht berechnet sind, sondern einfach die bestehenden Werte übernehmen sollen. das kann ich mir bisher noch nicht erklären..
Eventuell habe ich da noch was übersehen..
Gruss
Thomas
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln