Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: regedit am 05.03.07 - 11:53:29
-
Ich habe unten anhängende Formel in einer "Aktion" in einer Maske eingetragen. Wenn ich ein auf dieser Maske basierendes Dokument öffne (nicht im Bearbeitungsmodus), dann sucht die Aktion eine Remote-Nummer im Feld "Problem". Aufgrund dieser Remote-Nummer suche ich in der DB Produkte.nsf bestimmte Felder, welche ich unten mit den setfield-befehlen setze. Dies funktioniert auch prima.
Jetzt wollte ich allerdings einen Agenten schreiben, der diese Aktion für die ausgewählten Dokumenten eine Ansicht ausführt und bekomme dann die Fehlermeldung: @Befehle und andere UI-Funktionen sind in diesem Suchtyp nicht zulässig...
Was mache ich falsch???
tmp1 := @Right(Problem;"_R0");
tmp2 := @Left(tmp1;6);
Remote := "R0" + tmp2;
Kategorie := @DbLookup( "" : "NoCache" ; "LNDB01/D01/DE":"Produkte.nsf" ; "Navi1_ZF_Remote" ; Remote ; 3; [FailSilent]);
Kategorie2 := @DbLookup( "" : "NoCache" ; "LNDB01/D01/DE":"Produkte.nsf" ; "Navi1_ZF_Remote" ; Remote ; 4; [FailSilent]);
Produkt := @DbLookup( "" : "NoCache" ; "LNDB01/D01/DE":"Produkte.nsf" ; "Navi1_ZF_Remote" ; Remote ; 2; [FailSilent]);
User:= @DbLookup( "" : "NoCache" ; "LNDB01/D01/DE":"Produkte.nsf" ; "Navi1_ZF_Remote" ; Remote ; 8; [FailSilent]);
@Command([EditDocument]);
@SetField("otherusers" ; "");
@SetField("application" ; Kategorie);
@SetField("failuretype" ; Kategorie2);
@SetField("ProduktName" ; Produkt);
@SetField("user" ; User)
-
1) Hardgecodete Server und Datenbanknamen.
Das ist ganz pfui. Das ist aber sowas von Pfui, du kannst Dir gar nicht vorstellen, wie Pfui das eigentlich ist.
Schreib Dir die Parameter in ein Profildokument und lies diese von dort aus. BITTE. Im Namen all jener, die Deinen Code einmal warten müssen (und da schließe ich Dich mit ein ;) ).
2) Falsches "Target" bzw. falscher Befehl
Du musst das Target des Agents auf "None" stellen, wenn Du @Command Befehle verwenden willst.
Aus der Designer-Hilfe zum Thema "Agents":
@Commands are only allowed in agents that specify None in the target option.
-
Und ein EditDocument ist in diesem Zusammenhang vollkommen unnötig, das kann raus und dann statt @SetField FIELD xxx :=
Bernhard
-
Es geht :)
@Bernhard
Habe @Command([EditDocument]) entfernt und die Felder mit FIELD := gesetzt und jetzt funktioniert es.
@m3
Durch die obige Änderung, wie auch Dein Hinweis zu @Command und Agenten funktioniert es nun. Deine Rüge (postitiv aufgenommen :) ) bezüglich hardcodete Server- und Datenbanknamen werde ich mir zukünftig und in diesem Agenten auch ans Herz legen.
Danke für Eure schnelle Hilfe