Autor Thema: @SetField  (Gelesen 2098 mal)

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
@SetField
« am: 04.09.06 - 11:28:34 »
Hallo!

Ich habe in einer Aktionsschaltfläche einer Maske einen Formelsprachencode eingebaut, der je nach Inhalten in der Maske etwas ausführen soll. Grundsätzlich hier auch kein Problem.

Aber mein @SetField bereitet mir Kopfzerbrechen.

Ich habe in meiner Maske ein berechnetes Textfeld mit Mehrfachwerten-Zulassung.
Per Schaltfläche wird dieses Feld gefüllt:

@SetField("txtWerWann";txtWerWann : @Name([CN];@UserName) + " am " + @Text(@Today) + " Weiterleitung an Kollegen");

Nun wird mir aber nicht einfach genau dieser vorgegebene Text in das Feld geschrieben (Wiesel am 04.09.2006 Weiterleitung an Kollegen) sondern:

am 04.09.2006 Weiterleitung an Kollegen
Wiesel am 04.09.2006 Weiterleitung an Kollegen

Und bei der nächsten Verwendung der Schaltfläche steht dann das drin:

am 04.09.2006 Weiterleitung an Kollegen am 04.09.2006 Weiterleitung an Kollegen
Wiesel am 04.09.2006 Weiterleitung an Kollegen am 04.09.2006 Weiterleitung an Kollegen
Wiesel am 04.09.2006 Weiterleitung an Kollegen

und so weiter...

Was mache ich falsch?

Gruß,
Wiesel

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: @SetField
« Antwort #1 am: 04.09.06 - 11:42:30 »
Hallo
versuche es mal so:

Code
...
@SetField("txtWerWann";@Trim( txtWerWann : ( @Name([CN];@UserName) + " am " + @Text(@Today) + " Weiterleitung an Kollegen" ) ) ) ;
...
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Re: @SetField
« Antwort #2 am: 04.09.06 - 12:49:19 »
Das funktioniert super.
Aber merkwürdig finde ich das schon...

Danke auf jeden Fall!!!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: @SetField
« Antwort #3 am: 04.09.06 - 14:19:16 »
das ist überhaupt nicht merkwürdig, sondern die grösste Stärke der Formel- Sprache....

Diese kann nämlich -ohne dass man sich manuell per loop durch elemente einer Liste arbeiten muss- Befehle automatisch auf jedes einzelne Listenelement durchführen.

Liste1 := "a" : "b" : "c";
Liste2 := "1" : "2" : "3";

Liste1 + Liste2 ergibt:
"a1" : "b2" : "c3"

Du bist jetzt auf einen Spezialfall gestossen:

Liste1 := "a";
Liste2 := "1" : "2" : "3";
Liste1 + Liste2 ergibt:
"a1" : "a2" : "a3"

Hier handelt es sich (wei in der Mathematik) um bestimmte Präzedenzen:

In der Schule haben wir gelernt: Punkt vor Strich, Klammer vor Punkt
Übertragen gilt das in Notes genau so: (Doppel)punkt vor Strich, Klammer vor (Doppel)punkt

Deine Zuweisung wird also intern so abgearbeitet:

1. Operation:
Liste1 := txtWerWann : @Name([CN] ; @UserName)
(ergibt: "" : "Hanswurst" )

2. Operation
Liste1 + " am " + @Text(@Today) + " Weiterleitung an Kollegen"

Hier zieht das oben genannt beispiel: Werden zwei Listen verkettet, von denen eine weniger Elemente hat, dann wird die "kürzere" Liste so oft wiederholt, dass es wieder passt:
Das ganze wird also so aufgedröselt:
"" + " am " + @Text(@Today) + " Weiterleitung an Kollegen" :
"HansWurst" + " am " + @Text(@Today) + " Weiterleitung an Kollegen"

Und mit jeder weiteren Addition potentiert sich das Problem....

Mit der Klammer veränderst Du die Reihenfolge und erstellst erst einen Wert aus Username + Text + Zeit + Text, und hängst diesen EINEN Wert dann an die Liste über das ":" an.

Nur so als Erklärung für die Zukunft (und für andere mit ähnlichen Problemen)

Tode

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz