Domino 9 und frühere Versionen > ND8: Entwicklung

Exiting -> Agent ausführen

(1/5) > >>

Hedwig14:
Hallo!
ich möchte in einer Exiting-Formel (s.u.) einen Agenten (s.u.) starten.

Der Agent soll in diversen Felden nach dem Verlassen des Feldes(Exiting-Formel) eine Berechnung vornehmen.
Die Berechnungsformel will ich aber nur im Agenten hinterlegen.

Hier meine ersten Versuche. Leider werden mir die Felder nicht berechnet angezeigt !


Exiting-Formel

Sub Exiting(Source As Field)
   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim agent As NotesAgent
   
   
   Set db = s.CurrentDatabase
   Set uidoc=ws.CurrentDocument
   Set doc = uidoc.Document
   
                'Agent mit übergabe der Dokumenten ID starten
   Set agent = db.GetAgent("(AbrechnungBelegeSummenUSt)")
   Call agent.Run(doc.NoteID)
End Sub


Agent

Sub Initialize
   Dim ws As New NotesUIWorkspace
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim note As NotesDocument
   Dim session As New NotesSession
   Dim agent As NotesAgent
   Dim db As NotesDatabase
   
   Set db=session.CurrentDatabase
   Set agent = session.CurrentAgent
   Set doc=db.GetDocumentByID(agent.ParameterDocID)
   
'Hotelkosten incl. Umsatzsteuer
   'Umsatzsteuer Hotel
   doc.AB_USt_Hotelkosten =    doc.AB_Übernachtungskosten_gesamt(0) * doc.AB_Hotelumsatzsteuer(0)
   
   
   
   
End Sub

ata:
... das wird so auch nicht gehen, da das Dokument im Backend geändert wird - und nicht erkennbar gespeichert wird. Das ist nicht der richtige Ansatz. Warum unbedingt ein Agent?

Toni

Hedwig14:
Hallo Toni !
Soll ich lieber eine Funktion verwenden ?

ata:
... auf jeden Fall wäre eine Library am Besten. Ich mache es so, daß ich sogar noch zwischen Frontend und Backend in unterschiedliche Lib's trenne und die beiden Lib's über einen USe verknüpfe

Also zwei Libraries:

lib.[MASKENNAME].frontend
lib.[MASKENNAME].backend

In der lib.[MASKENNAME].frontend wird per use dann lib.[MASKENNAME].backend eingebunden.

Das hat den Vorteil, daß dir keine Frontendobjekte bei Hintergrundagenten im Weg stehen. Ausserdem kannst du diesen Code dann universell überall einsetzen.

Das aktuelle Dokument kannst du nun auch als uidoc (frontend) oder doc (backend) durchreichen. In diesem Fall bist du in der Lage Änderungen im aktuell geöffneten Dokument sehen zu können.

Wieviel Erfahrung hast du mit LS?



Hedwig14:
Danke für Deinen Tip !
Aber ich glaube das ist def. zu hoch für mich....

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln