Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Norbert20 am 01.03.05 - 09:15:12
-
Hilfe - was mache ich falsch?
Blutiger Anfänger sucht Hilfe!
Ich versuche, über @prompt eine Auswahlliste anzuzeigen und die ausgewählten Einträge in das Feld SendTo übertragen. Es wird jedoch immen nur der erste Eintrag übernommen.
FIELD Empfänger:=@Prompt([OKCANCELLISTMULT]:[NoSort]; "Auswahl der Mailempfänger"; "Wählen Sie einen oder mehrere Namen als Empfänger dieser Anfrage."; "alle"; "Name1":"Name2":"Name3"...:"alle");
@Command([MailComposeMemo]);
@Command([EditGotoField]; "EnterSendTo");
@Command([EditInsertText];Empfänger);
@Command([EditGotoField]; "Subject")
-
Hi,
das Problem liegt hier:
@Command([EditInsertText];Empfänger);
Dieser Formelbefehl kann nicht mit Listen umgehen, sondern nur mit Text. Daher nimmt er immer nur den ersten Eintrag.
Versuch's mal so:
FIELD Empfänger:=@Prompt([OKCANCELLISTMULT]:[NoSort]; "Auswahl der Mailempfänger"; "Wählen Sie einen oder mehrere Namen als Empfänger dieser Anfrage."; "alle"; "Name1":"Name2":"Name3"...:"alle");
@Command([MailComposeMemo]);
@Command([EditGotoField]; "EnterSendTo");
@SetField("Empfänger";Empfänger);
@Command([EditGotoField]; "Subject")
Axel
-
Genau, Axel.
Alternnativ könnte man ein @Implode(Empfänger; ", ") machen.
Achtung:
FIELD Empfänger:=@Prompt
Das FIELD hat hier IMHO nichts zu suchen, da "Empfänger" hier nur eine Variable ist.
-
So sollte es gehen:
FIELD Empfänger:=@Prompt([OKCANCELLISTMULT]:[NoSort]; "Auswahl der Mailempfänger"; "Wählen Sie einen oder mehrere Namen als Empfänger dieser Anfrage."; "alle"; "Name1":"Name2":"Name3"...:"alle");
@Command([MailComposeMemo]);
@Command([EditGotoField]; "EnterSendTo");
@Command([EditInsertText];@Implode(Empfänger));
@Command([EditGotoField]; "Subject")
Andreas
-
Muss nicht noch -1 abgefangen werden?
Wenn der Benutzer "Abbrechen" wählt, wird die Auswertung der Formel gestoppt, außer bei [YesNoCancel]; hier wird -1 zurückgegeben, wenn der Benutzer "Abbrechen" wählt.
-
Nö, da ja hier [YesNoCancel] nicht verwendet wird ;)
-
Da muss noch einiges geändert werden, damit das vernünftig läuft.
Aber das ist ja nicht der Sinn der Übung.
Andreas
-
Vielen Dank für die schnellen Antworten. :D
@axel: funktionert leider nicht.
Lösung von Andreas funktioniert. Klasse.
Frage: Gibt es noch eine Lösung zwischen den Einträgen ein ";" einzufügen?
Norbert
-
Frage: Gibt es noch eine Lösung zwischen den Einträgen ein ";" einzufügen?
@Implode(Empfänger; "; ")
-
Vielen Dank.
Klappt wunderbar.
P.S. Habe beim ersten Versuch deiner Lösung die Klammer falsch gesetzt.
Super schnelle Hilfe.
Norbert
-
Hm. Ist jetzt ein Schuss ins blaue, aber da gibt es sehr vermutlich noch ein paar Randbedingungen, die abgefangen werden müssen.
Was ist, wenn der User nix auswählt und per Kreuz schliesst, etc.
-
Toll abfangen und auswerten wie etwa in LS geht da leider nicht wirklich AFAIK.
User wählt nix aus: da könnte man auf Empfänger = "" prüfen.
Cancel / Kreuz anklicken: Script bricht komplett ab und nichts pasiert mehr.
-
So sähe das bspw. bei mir aus:
_Empfaenger := @Prompt([OKCANCELLISTMULT]:[NoSort]; "Auswahl der Mailempfänger"; "Wählen Sie einen oder mehrere Namen als Empfänger dieser Anfrage."; "alle"; "Name1":"Name2":"Name3"...:"alle");
@If(
_Empfaenger = "" | @Text(_Empfaenger) = "1";
@Return("");
""
);
@Command([MailComposeMemo]);
@Command([EditGotoField]; "EnterSendTo");
@Command([EditInsertText];@Implode(_Empfaenger;";"));
@Command([EditGotoField]; "Subject")
Andreas
-
Das @Implode gefällt mir nicht - da wird ja explizit aus einem Array ein skalarer Wert gemacht, was durchaus zu Problemen führen kann. Warum nicht gleich ein @SetField mit dem _Empfaenger-Werten ?
Bernhard