Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Bille am 09.02.07 - 10:40:46

Titel: zwei Agenten hintereinander starten
Beitrag von: Bille am 09.02.07 - 10:40:46
Hallo,

ich rufe in der geöffneten Memo-Maske mittels Button zwei Agenten auf:

Code
@Command([RunAgent]  ;"GrussformelBild");
@Command([RunAgent]  ;"GrussformelText");

Der erste Agent (Lotus-Script) wird abgearbeitet und das Bild in das Memo eingefügt.
Beim zweiten Agent allerdings kommt der Fehler:
"Der angegebene Agent ist nicht vorhanden."

Wenn ich die beiden Agenten nacheinander über das Menü "Aktionen" aufrufe, klappt es. Mit dem ersten Agenten wird das Bild und mit dem zweiten Agenten der Text eingefügt.

Beide Agenten haben die Eigenschaften:
- auslösen durch Ereignis
- Auswahl im Menü Aktionen
- Ziel: keines

Was mache ich hier falsch bzw. woran kann das liegen? (Tippfehler beim Agentennamen liegt auch nicht vor.)


Gruß
Bille
Titel: Re: zwei Agenten hintereinander starten
Beitrag von: Thomas Schulte am 09.02.07 - 10:48:11
@postedCommand
Titel: Re: zwei Agenten hintereinander starten
Beitrag von: koehlerbv am 09.02.07 - 10:58:01
Abgesehen davon: Warum machst Du denn nicht aus den zwei Agents einen? Grussformeltext kennen wir ja aus Deinem letzten Thread als sehr, sehr simplen Algorithmus, der einfachst nach LS zu transformieren ist.

Bernhard
Titel: Re: zwei Agenten hintereinander starten
Beitrag von: Bille am 09.02.07 - 11:37:27
In dem "Grussformeltext" werden noch Textelemente aus dem Adreßbuch, sowie aus einer internen Datenbank geholt. Und die Arbeit, diese in LS umzuschreiben, wollte ich mir einfach sparen.

@Thomas:
Leider klappt das mit dem @PostedCommand auch nicht. Der Fehler bleibt der gleiche. Es funktioniert nur, wenn ich zuerst den TextAgent und anschließend den BildAgent laufen lasse. Aber das Bild soll vor dem Text erscheinen.

Nachdem das nicht funktioniert, muss ich mich wohl oder übel an die Fleißaufgabe machen und den TextAgenten umschreiben.

Bille
Titel: Re: zwei Agenten hintereinander starten
Beitrag von: Axel am 09.02.07 - 12:38:46
Hast du @PostedCommand bei beiden Agenten verwendet?

Eigentlich sollte das so gehen:

@Command([RunAgent]  ;"GrussformelBild");
@PostedCommand([RunAgent]  ;"GrussformelText");



Axel

Titel: Re: zwei Agenten hintereinander starten
Beitrag von: Bille am 09.02.07 - 13:12:16
Nein, Axel, ich hatte das schon richtig verstanden und das @PostedCommand nur beim zweiten Agenten verwendet. Aber es funktioniert so nicht. FM "Agent nicht vorhanden"
Irgendwie hab ich das Gefühl, dass der erste Agent einfach zu lange dauert und der zweite Agent schon gestartet wird, bevor er mit dem Abarbeiten vom ersten Agenten fertig ist.
Schließlich holt er sich mit dem ersten Agenten ein Bild aus einem anderen Dokument mittels Paste & Copy. --> siehe Thread  http://atnotes.de/index.php?topic=34775.0

Aber vielleicht kommt mir das auch nur so vor ...

Bille
Titel: Re: zwei Agenten hintereinander starten
Beitrag von: koehlerbv am 09.02.07 - 13:17:50
Bille, holst Du die Unterschrift (das Bild) aus einer anderen Datenbank? Dann wird Deiner erster Agent - Du arbeitest dort ja im FrontEnd) den Focus auf der anderen DB lassen. Wenn nun der zweite Agent gestartet werden soll, wird er in DB2 gesucht ...

Ein Timing-Problem kann es nicht sein, da die Agents nacheinander ausgeführt werden.

Bernhard

PS: Obwohl ... wenn die letzte Aktion von Agent1 das Paste ins Memo ist, muss auch der Focus wieder stimmen. Oder schliesst Du erst danach das Dokument für das Copy?
Titel: Re: zwei Agenten hintereinander starten
Beitrag von: Bille am 09.02.07 - 13:22:45
Ja, das Bild hole ich aus einer anderen Datenbank.

Mein Agent1 "GrussformelBild" sieht so aus:

Code
	Dim ndoc As NotesDocument 
	
	Dim Anwender As String
	Anwender = s.CommonUserName 
	
	Set ndoc = view.GetDocumentByKey (Anwender)
	
REM *** Unterschrift aus nikesa in EditMode setzen ***	
	Dim Uuidoc As NotesUIDocument 
	Set Uuidoc = ws.EditDocument(True, ndoc)
	
REM *** Unterschrift markieren und in Body-Feld einfügen ***	
	Call Uuidoc.GoToField("Unterschrift")
	Call Uuidoc.SelectAll
	Call Uuidoc.Copy
	Call Uuidoc.Close ()
	
	Call uidoc.Paste()
	
End Sub

Demzufolge gehe ich davon aus, dass der Focus wieder in dem Memo ist und nicht mehr in der Datenbank, aus der ich mir das Bild hole.
Und wenn der Agent2 erst nach dem Abarbeiten von Agent1 erfolgt, verstehe ich nicht, warum die Fehlermeldung kommt. Wenn ich das manuell über Menü-Aktionen mache, ist es doch im Prinzip nichts anderes, und dort (also manuell) funktioniert es.

Komisch!?
Titel: Re: zwei Agenten hintereinander starten
Beitrag von: koehlerbv am 09.02.07 - 13:29:49
Manuell ist das was gaaaanz anderes: Allein schon Durch den Mausklick setzt Du den Fokus ...

Okay, das Paste ist der letzte Zucker von Agent1. Trotzdem bleibt der Fokus in der anderen DB (wenn Du nicht doch noch einen Schreibfehler da drin hast). Fakt ist: Dein Agent wird im Kontext der beiden Aufrufe nicht gefunden. PostedCommand oder nicht hat damit nichts zu tun.

Auch wenn mich interessieren würde, was die wahre Ursache ist: Allein schon aus Pflegegründen und wegen Ordnung und Sauberkeit im Schlachthof kann ich nur dringend dazu raten, beide Agents zu vereinen.

Bernhard
Titel: Re: zwei Agenten hintereinander starten
Beitrag von: Bille am 09.02.07 - 13:38:27
Ja, Bernhard, Du hast schon recht. Das war eigentlich auch mein ursprüngliches Ansinnen, aber irgendwie hat sich meine Faulheit durchgesetzt und ich wollte den Weg des geringsten Widerstands gehen.  ;D

Egal, ich fasse die beiden Teile jetzt zusammen. Kann also durchaus sein, dass ich mich wieder melde.

Danke an alle Beteiligten und ein schönes Wochenende.

Bille