Domino 9 und frühere Versionen > ND9: Entwicklung

Attachment im Frontend hinzufügen

(1/1)

Troubleshooter:
Liebe Community,

parallel zu so manch anderen Problemen versuche ich, ein Attachment im Frontend einem RT-Feld hinzuzufügen. Problem hierbei ist allerdings, dass das Dokument letztendlich nicht gespeichert sein soll.

Das Szenario sieht wie folgt aus:

Über ein .Net-Programm wird eine NotesSession instanziert:

--- Code: ---Session = Activator.CreateInstance(Type.GetTypeFromProgID("Notes.NotesSession"))
--- Ende Code ---

Dann wird über eine Schaltfläche im Programm ein neues Dokument erstellt:


--- Code: ---Database = Session.GetDatabase(ServerName, DatabaseName)

Dim Document As Object ' NotesDocument
Document = Database.CreateDocument
Document.ReplaceItemValue("Form", "MainForm")
Document.Save(True, False)
--- Ende Code ---

Nachdem das Dokument erstellt wurde, wird ein Agent ausgeführt, der Berechnungen im Dokument durchführt und dieses letztendlich auch im Bearbeitungsmodus öffnet:


--- Code: ---Dim Agent As Object ' NotesAgent
Agent = Database.GetAgent("(ProcessDocument)")
Agent.Run(Document.NoteId)
--- Ende Code ---

-- Agent --

--- Code: ---Sub Initialize
Dim Session As NotesSession
Dim CurrentDatabase As NotesDatabase
Dim Document As NotesDocument
Dim UIDocument As NotesUIDocument
Dim UIWorkspace As NotesUIWorkspace
Dim Agent As NotesAgent
 
Set Session = New NotesSession
Set UIWorkspace = New NotesUIWorkspace
Set CurrentDatabase = Session.CurrentDatabase
Set Agent = Session.CurrentAgent

Set Document = CurrentDatabase.GetDocumentById(Agent.ParameterDocID)

If Not Document Is Nothing Then
Set UIDocument = UIWorkspace.EditDocument(True, Document)

' UIDocument.FieldSetText "", ""
' ...

Document.Removepermanently True
End If
End Sub
--- Ende Code ---

Wie man sieht, wird das Backend-Dokument zum Schluss gelöscht. Hat den Sinn, dass, wenn der Frontend-User das UI-Doc ohne zu speichern schließt, keine Überbleibsel davon mehr zu sehen sind.
Soweit sogut. Nun müssen jedoch noch Anhänge eingefügt werden.

Wenn ich die Anhänge im Backend-Dokument speichere, sind sie natürlich nach dem Löschen des Backend-Dokuments nicht mehr verfügbar.
Nur die Attachments programmatisch direkt ins Frontend zu laden, schaffe ich nicht.
Ich habs in meiner Naivität mit Evaluate und @Command probiert, danach mit einem eigenen Formel-Agent:


--- Code: ---REM { @Command([EditDocument]; 1); };
@Command([EditGotoField]; "Anhaenge_RT");
@Command([EditInsertFileAttachment]; "C:\Test.txt")
--- Ende Code ---

Es will und will nicht  :(

Driri:
Hast Du es schon mit NotesUIDocument.Import versucht ? Der Cursor muß dafür allerdings vorher in das Richtextfeld gesetzt werden.

Troubleshooter:
Nein, noch nicht, danke für den Tipp!

Der Code sieht nun im Agent so aus:

UIDocument.Gotofield "Anhaenge_RT"
UIDocument.Import "Microsoft Word", "C:\Test.docx"

Jedoch passiert nichts (Cursor wird aber korrekterweise ins Feld gesetzt). Bzw. sehe ich nun ein Whitespace-Zeichen in besagtem Feld.
Wenn ich das richtig verstanden habe, müsste ich bei dieses Methode dann aber jede Dateiendung abfragen und den Filter entsprechend setzen (und bei PDF natürlich vorher noch einen neuen Eintrag in der notes.ini erstellen)?

Update 17.02.2014 16:20 Uhr:
Ich habs nun so gelöst, wie in diesem Beitrag beschrieben: http://atnotes.de/index.php/topic,54333.msg350715.html
Dh. temporäres Doc erstellen, dort speichern, öffnen, kopieren, temp. Doc wieder schließen und löschen.
Ist wieder mal gepfuscht, aber was anderes lässt Notes ja nicht zu >:(

Import war doch der falsche Weg, da ja tatsächlich versucht wurde, die Datei einzubetten, was nicht gewünscht war bzw. einfach die falsche Funktion für diese Aufgabe

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln