Domino 9 und frühere Versionen > ND6: Entwicklung

Attachment in RichText-Feld

(1/4) > >>

Leddl:
Hallo zusammen,

nach langer Notes-Abstinenz muss ich zur Zeit doch mal wieder etwas programmieren.

Grob gesagt sollen in einer Anwendung Fotos gepflegt werden können. Hierfür sollen diese als Attachments in verschiedene Richtextfelder eingefügt werden.
Dazu konnte ich hier ja auch einiges finden. Nachdem ich dann aber auch auf das Phänomen gestoßen bin, dass das Attachment unter Benutzung von LS nicht im angesprochenen RichText, sondern unter dem Dokument hinzugefügt wird, habe ich mich dann an der Variante mit dem Einfügen im PostOpen versucht. Das sah zu Beginn sehr vielversprechend aus und hatte durch den Einsatz der Formeln auch den positiven Nebeneffekt, dass das entsprechende Dateiicon dargestellt wird.
Allerdings durfte ich nun feststellen, dass offenbar meine Änderungen im Postopen nicht gespeichert werden... In der Ansicht ist weiterhin das Feld mit dem Dateinamen gefüllt und das RichTextfeld leer.

Zur Verdeutlichung vielleicht kurz einige Code-Ausschnitte:
Code im PostOpen, FileName enthält den Dateinamen des Attachments, rtAttachment ist das RichText, in den die Datei soll.

--- Code: ---@If(
FileName != "";
@Do(
@Command([EditDocument];"1";"1");
@Command([EditGotoField]; "rtAttachment");
@Command( [EditInsertFileAttachment];FileName);
@SetField("FileName";"");
@Command([FileSave])
);
""
)

--- Ende Code ---

In einem Buttonclick wird über einen Dialog die Datei ausgewählt (dann noch einiges anderes damit gemacht) und anschließend der Dateiname in das Feld Filename geschrieben. Dann speichere ich alles, schließe das Dokument und öffne es neu.

--- Code: ---Call uidoc.FieldSetText("FileName",strFilePath)

Call uidoc.Save()
doc.Saveoptions = "0"
Call uidoc.Close
Call doc.Save(True,True)
Set uidoc = ws.editDocument(True, doc)

--- Ende Code ---
Hier sieht dann auch alles gut aus, das Attachment ist da und der Dateiname nicht mehr. Wenn ich dann allerdings das Dokument schließe, scheint Notes alles vergessen zu haben... Das Attachment ist in der Vorschau nicht zu sehen, dafür aber wieder der Dateiname. Solange die Datei noch im Dateisystem existiert gar kein Problem, sie wird ja dann im Postopen wieder als Attachment dargestellt. Eigentlich sollte die aber in einem spätern Schritt nach dem Einfügen des Attachments automatisch wieder von der Festplatte gelöscht werden...

Ich habe bereits versucht, nach dem Reload des Dokuments sowohl das uidoc als auch das doc noch einmal zu speichern, aber selbst das manuelle Speichern des Dokuments über die Symbolleiste verändert überhaupt nichts...

Könnt ihr mir eventuell sagen, was genau ich hier übersehe? Wahrscheinlich etwas total offensichtliches, aber ich komme einfach nicht drauf.

Danke schonmal und schöne Grüße,
Axel

DAU-in:
@Command( [EditInsertFileAttachment] ): Attaches a file to a document.

Das wird meines ERachtens nach nicht im Feld eingefügt.

Wie hast du die Attachments denn via LS im RT-Feld eingefügt? Bei mir ging das früher problemlos.
Das unter dem Dokument einfügen sieht aus, als ob das zugehörige Feld gelöscht, oder das Attachment eben nicht in das Feld eingefügt wurde.

Grüsse

Dau-in

DAU-in:
Call uidoc.Save()
doc.Saveoptions = "0"
Call uidoc.Close
Call doc.Save(True,True)
Set uidoc = ws.editDocument(True, doc)


ähhhhh, vielleicht stehe ich auf dem Schlauch, aber speicherst du hier nicht gerade explizit, dass nichts gespeichert werden soll?

m3:
Und wenn, dann in eine neue Version. Ob das so gewollt ist?

Leddl:
Hallo,

hui, so viele Antworten schon :) Danke schonmal dafür!

--- Zitat von: DAU-in am 17.11.08 - 12:34:13 ---@Command( [EditInsertFileAttachment] ): Attaches a file to a document.

Das wird meines ERachtens nach nicht im Feld eingefügt.

--- Ende Zitat ---
Doch, das klappt wunderbar, solange der Fokus in einem Richtext liegt.

--- Zitat von: DAU-in am 17.11.08 - 12:34:13 ---Wie hast du die Attachments denn via LS im RT-Feld eingefügt?
Das unter dem Dokument einfügen sieht aus, als ob das zugehörige Feld gelöscht, oder das Attachment eben nicht in das Feld eingefügt wurde.

--- Ende Zitat ---
Mit

--- Code: ---If doc.HasItem(rtAttName) Then
Set rtAtt = doc.GetFirstItem(rtAttName)
Else
Set rtAtt = New NotesRichTextItem(doc,rtAttName)
End If

If ( rtAtt.Type <> RICHTEXT ) Then
Print("Zielfeld ist kein Richtextfeld")
Goto NoResult
End If

Call rtAtt.EmbedObject ( EMBED_ATTACHMENT, "", strFilepath)

--- Ende Code ---
Das gleiche Problem, das ich damit hatte, konnte ich hier im Forum auch mehrmals finden. Allerdings haben die wenigen Lösungsvorschläge dazu nichts bewirkt. Und ja, das Richtextfeld existiert und wird auch im Code selbst erkannt. Nur wird dann eben der Anhang trotzdem ans Dokument, anstatt an das Richtext angehängt.


--- Zitat von: DAU-in am 17.11.08 - 12:37:19 ---ähhhhh, vielleicht stehe ich auf dem Schlauch, aber speicherst du hier nicht gerade explizit, dass nichts gespeichert werden soll?

--- Ende Zitat ---
Soweit ich das weiß, unterbindet Saveoptions := 0 doch nur den Speicherdialog. Liege ich da falsch? Auf den Codeschnipsel bin ich hier im Forum auf der Suche nach einer Lösung für mein Problem gestoßen. Das habe ich mir also nicht selbst überlegt ;D

Wie müsste ich denn an dieser Stelle sonst vorgehen? Lasse ich diese Zeile weg, kommt nämlich wieder die Nachfrage, ob ich speichern möchte...

Schöne Grüße,
Axel

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln