Domino 9 und frühere Versionen > ND7: Entwicklung

OpenView-@Befehl

(1/2) > >>

Jürgen Schomann:
ich möchte in einer Ansicht einen Agenten aufrufen, der in eine andere Ansicht wechselt und dort prüfen soll ob es ein Dokument enthält.
Dazu habe ich folgende Anweisungen testweise ausgeführt.

@Command([OpenView]; "Ansicht"; ""; "1");
@Prompt([Ok];"";@Text(@DocumentUniqueID));

die Ansicht wird zwar gewechselt, aber ich erhalte als Dokument-ID immer noch die von dem in der alten Ansicht ausgewählten Dokument und nicht die ID des Dokuments in der neuen Ansicht. Es scheint so, dass der OpenView-@Befehl nur angestoßen wird und die Abarbeitung gleich weitergeht, ungeachtet ob der Befehlt fertig ist.

Nur wenn ich folgende Anweisungen ausführe:

@Command([RunAgent]; "Agent1"); mit der Anweisung @Command([OpenView]; "<Ansicht>"; ""; "1");
@Command([RunAgent]; "Agent2"); mit der Anweisung @Prompt([Ok];"";@Text(@DocumentUniqueID));

erhalte ich im 2. Agenten die ID des Dokuments in der neuen Ansicht. Die Abarbeitung der Agenten wird hier immer erst abgewartet. Im Gegensatz dazu scheint der OpenView-@Befehl in dem ersten Beispiel nicht abgewartet zu werden.
Gibt es eine Erklärung dafür oder einene andere Möglichkeit, so dass ich nicht extra Agenten für die o. g. Befehlsfolge erstellen muss?

Thomas Schulte:
Erklärung: Deine aufgerufene Ansicht hat den Focus zu diesem Zeitpunkt noch nicht., Beschäftige dich mal mit der Reihenfolge in der die Formelsprache Befehle, Speziell @Command Befehle abarbeitet. Siehe auch @PostedCommand.

Andere Vorgehensweise: Benutze Lotus Script. Da ist das ohne Error Handling ein 5 bis 10 Zeiler, je nachdem wie ausführlich du schreibst.

Jürgen Schomann:
Der @Command-Befehl wird doch aber bei OpenView gleich abgearbeitet. Bestimmte Befehle, wie z. B. FileCloseWindow, werden trotz @Command aber wie @PostedCommand abgearbeitet. Es gibt hier aber auch ein Äquivalent CloseWindow, das sofort abgearbeitet wird.
Das mit dem Focus ist mir schon klar. Wenn ich aber die Befehlsfolge

@Command([RunAgent]; "Agent1"); mit der Anweisung @Command([OpenView]; "<Ansicht>"; ""; "1");
@Command([RunAgent]; "Agent2"); mit der Anweisung @Prompt([Ok];"";@Text(@DocumentUniqueID));

abarbeite, wird doch auch gewartet bis der 1. Agent fertig ist.
Eine Lösung mit LotusScript wäre z. B. OpenView für NotesUIDatabase, die damit dann auch den Focus erhält? Könnte man mit RunAgent diesen LotusScript-Agenten auch in eine @Formel-Agenten einbauen, und wird dann auch gewartet bis er fertig ist. Die Umgebung ist nämlich eine komplexere Struktur in einer Fremdanwendung.

Kadlec:
Du brauchst nur die DocUID? Warum holst Du die nicht mit @DBLookup?

Boris

pram:
vielleicht hilft dir @updateFormulaContext hier weiter.

Gruß
Roland

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln