vorab: Ich hab wirklich gesucht, aber ich war wahrscheinlich zu blöd, die entscheidenden Keywords in die Suchzeile einzutragen. Und bei derzeit 6928 Themen mit 47019 Beiträgen in dieser Rubrik wäre es absurd, seitenweise zu suchen. In der Hoffnung, dass noch jemand auf diesem Planeten mit Notes / Domino R5 arbeitet, hier mein Problem:
In einer Datenbank (DB1) wird ein Nur-Lese-Dokument (SaveOptions=0) erstellt. Dort werden durch den Nutzer Vorgaben gemacht und dann klickt er auf eine Schaltfläche, wodurch zwei Agenten abgearbeitet werden und das Dokument inhaltlich aktualisiert wird. Soweit, so schön - klappt alles, nix dran änderbar.
Den Zwischenschritt mit dem "Vorgaben-machen" möchte ich überspringen, da schon beim Öffnen faktisch feststeht, welche Vorgaben verwendet werden sollen. Dies soll in einer anderen Datenbank (DB2) erfolgen. Durch den Aufruf sollen folgende Aktionen in LotusScript ausgeführt sollen:
- öffne oben genannte Datenbank DB2
- erstelle besagtes Nur-Lese-Dokument als Backend-Dok.
- befülle die Vorgaben
- mache das Nur-Lese-Dokument zum Frontend-Dok. (UI)
- führe die zwei Agenten aus
- aktualisiere das Nur-Lese-Dokument
Ich habe mich in zwei Etappen vorgearbeitet. Erstmal wurden die Aktionen bis zum "mache das Nur-Lese-Dokument zum Frontend-Dok." ausgeführt. Alles erfolgreich. Das Dokument wird genauso angezeigt wie gewünscht, die Vorgaben sind allesamt ausgefüllt. Der Klick auf die Schaltfläche führt zur gewünschen Anzeige.
In der zweiten Etappe bin ich an der Ausführung der Agenten gescheitert. Hier der ScriptCode.
' setze DB-Instanz
Set db1 = New Notesdatabase (servername, filename)
' erstelle "Nur-Lese-Dok." als Backend-Dok. in der Datenbank
Set doc = New NotesDocument (db1)
' Vorgaben im Backend setzen
' verborgene Felder berechnen (die sich sonst beim Erstellen des Dok. automatisch ergeben)
doc.ComputeWithForm False, True
' öffne die DB1 im Frontend
uiws.Opendatabase servername, filename, viewname
' mache das Backend-Dok. zum Frontend-Dok.
Set uidoc = uiws.EditDocument (True, doc)
uidoc.Refresh
' Ende erste Etappe
' zum Test: Exit Function
'
' Instanziieren des ersten Agenten und Ausführung
Set agent = db1.GetAgent (agentname1)
agent.Run
uidoc.Refresh
' Instanziieren des zweiten Agenten und Ausführung
Set agent = db1.GetAgent (agentname2)
agent.Run ' sorry - diese Zeile fehlte beim ersten Posten - Danke @ DerAndre
uidoc.Refresh
Wo liegt mein Denkfehler? So wie sich das Frontend darstellt, wird der erste Agent ausgeführt, der zweite Agent nicht, denn letzterer liefert Ausschriften in der Statuszeile - genau die erfolgen aber nicht. Dennoch - weil ja der erste Agent läuft - sollte die Art und Weise des Instanziierens und des Aufrufs nicht total verkehrt sein. Beide Agenten sind Script-Agenten vom Typ "einmal ausführen".
Ich partizipiere eher still an diesem Super-Forum und finde fast immer eine Lösung ohne zu posten. Meine Bitte: Wenn ich also schon mal was poste, möchte ich dann aber nicht - wie beim letzten Mal - seitenweise Rechtfertigungen nachliefern, warum ich so und nicht anders an die Sache herangegangen bin (bzw. herangehen konnte / durfte etc. pp.).