Domino 9 und frühere Versionen > ND7: Entwicklung

Datei anhängen im Frontend

(1/3) > >>

Hatschi:
Hallo Notesler!

Ich will einen Anhang im Frontend anhängen. Hier im Forum finde ich Hinweise das es nicht geht. Diese Diskussionen sind teilweise aber schon 5 Jahre und älter. Gibt es da immer noch keine Lösung für (Notes Client 7.0.3) ?

Ich möchte Daten in ein geöffnetes Dokument importieren. Dafür liegt eine Übergabedatei vor, die den Feldnamen und den Feldinhalt für die Maske enthält. Bei Textfeldern sehe ich da keine Schwierigkeiten. Jetzt soll aber noch in ein Richtextfeld eine Datei eingefügt werden. Über das Backend kann ich nicht gehen, weil auf den Masken viele Feldvalidierungen sind. Ein UIDOC.Save bringt mir dann einen Validierungsfehler nach dem anderen.
Evaluate darf keine @Command( [EditInsertFileAttachment] ; "C:\\Temp\\test.txt" ) ausführen. Dann habe ich versucht das in einen zweiten Agenten auszulagern und diesen aus meinem Importscript zu starten.
Anhangsagent:
@Command([EditGotoField];"Body");
@Command( [EditInsertFileAttachment] ; "C:\\Temp\\test.txt" );

Das bewirkt aber leider auch nichts.
Bin ich da auf dem ganz falschen weg? Oder liegt es vielleicht an den Laufzeiteinstellungen des Agenten? Die sind mir nämlich nicht ganz klar. Jetzt habe ich z.B. eingestellt das der Anhangsagent in der "Auswahl der Agentenliste" erscheint, und als Ziel "Keines" angegeben.

Könnt ihr mir Hinweise zur Lösung geben?

Bernd

Peter Klett:
Dass das nicht gehen soll, kann ich nicht nachvollziehen.

Für eine ähnliche Aktion habe ich in einer Teilmaske eine Schaltfläche, die in Script geschrieben ist. Soll eine Datei angehängt werden, schreibe ich Pfad und Dateiname in ein Feld des Dokuments und führe ein uidoc.Refresh aus. Im Postrecalc der Teilmaske ist sinngemäß folgende Formel hinterlegt:

@If (Dateiname = ""; @Return (""); "");
@Command ([EditInsertFileAttachment]; Dateiname)

Funktioniert schon seit 5.10 und auch noch unter 8.

Natürlich muss das Richtextfeld bearbeitbar sein.

Hatschi:
Nachtrag:
Wenn ich den Agenten auf "Auswahl im Menü Aktionen" stelle, dann kann ich ihn auch von Hand starten. Das funktioniert dann auch und die Datei wird angehangen. Starte ich jedoch das Script zum Importieren der Daten, der wiederum den Anhangsagenten ausführt, wird nichts angehangen. Der Anhangsagent wird aber ausgeführt, zumindest laut Agentprotokoll. Auch ein eingefügtes @Statusbar wird nicht ausgegeben.
Werden diese Befehle im Anhangsagenten einfach ignoriert, wenn der Agent von einem anderen Agenten aufgerufen wird?
 
@StatusBar("Angekommen");
@Command([EditGotoField];"Body");
@Command( [EditInsertFileAttachment] ; "C:\\Temp\\Test.txt" );


Bernd

Peter Klett:
Poste mal das Script, mit dem Du den Anhangsagenten startest

Hatschi:
Hallo Peter,

der Import soll vom Anwender ausgelöst werden. Deshalb liegt mein Import in einer Aktion. Dein Ansatz würde einen Eingriff in jede Maske bedeuten. Weil der Agent aber zur Zeit in mindestens 3 Datenbanken und mit zig Masken eingefügt werden soll, müssten alle Masken im Postrecalc angepasst werden. Diese Fleissarbeit würde ich gerne umgehen, zu mal dieses Event auch schon in manchen Masken Verwendet wird.

Irgendwie habe ich das Gefühl das der aufgerufene Agent die Befehle nicht ausführt. Siehe auch meinen Nachtrag etwas weiter oben. Habe ich da etwas übersehen?

Bernd

PS: Jetzt haben wir uns wieder überschnitten, aber hier der Code:
Sub AgentAnhaengenStarten
   
   Dim agent As NotesAgent
   
   'suchen des Agenten um die Datei anzuhängen
   Forall a In db.Agents
      If ( a.Name = "CIM~Import~anhaengen" ) Then
         Set agent = a
         Exit Forall
      End If
   End Forall
   
   'Umgebungsvariable mit dem Pfad setzen
   
   'Agent starten
   Call agent.run
   Call uidoc.refresh
End Sub

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln