Das Notes Forum
Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: alexB am 18.12.19 - 12:52:51
-
In einer Maske verwende ein Feld, das ist "Berechnet beim Anlegen".
Damit versuche ich u.a. (beim Erstellen des Dokumentes) Werte in andere, bearbeitbare Felder schreiben.
Das funktioniert weder mit
FIELD Feldname := "xyz" noch mit
@SetField("Feldname"; "xyz") ;
Irgenwie stehe ich aufm Schlauch, hat jemand eine Anregung? :-:
-
Bei der Berechnung von Feldern kommt es auch immer sehr auf die Berechnungsreihenfolge an.
Für Deinen Zweck wäre eher das QueryOpen Event geeignet.
-
Die Berechnung soll nur einmalig, bei Erstellung des Dokumentes erfolgen, deshalb verwende ich "Berechnet beim Anlegen""
-
Verstehe, vielleicht hilft Dir die Formel @IsNewDoc weiter.
-
Du musst doch einfach nur in dem bearbeitbaren item im DEFAULT VALUE AUF DAS berechnete item referenzieren
cwcItem ist der Name des berechneten items
DefaultValue des bearbeitbaren items
@If(@IsNewDoc;cwcItem;@ThisValue)
-
Bei solchen grundlegenden Fragen sollte man immer versuchen dies im "kleinsten möglichen Rahmen" nachzustellen und ein Feld in einer Maske ist eine Sache von wenigen Sekunden ;)
Dabei solltest Du keinerlei Probleme feststellen und die Aufgabe die sich daraus ergibt - finde den Unterschied.
Da ich Deine Umgebung nicht kenne, wäre mein Tippe das dieses Feld bereits einen Wert besitzt bevor es mit der Maske geöffnet wird, könnte aber auch sein das eine andere Formel die vorherige überschreibt und so weiter...
-
... und man muss auch richtig lesen können ;)
Denn mein Test war zu einfach und hatte kein bearbeitbares Feld, wenn das vorliegt scheint es tatsächlich nicht zu gehen und muss anders gelöst werden.
Frage warum setzt Du die Formel nicht direkt als Vorgabewert in das Feld?
-
Wenn ich ddas richtig verstehe, ist das ein Feld welches andere Felder befüllt wenn ein neues Dokument angelegt wird.
Das haben wir auch noch hier.
Diese Art der Programmierung hatten wir unter Notes 3 weil somit alle Einträge zentral waren.
.. wenn man mal an 50 - 60 Felder denkt die gesetzt werden müssen wenn es ein neues Dokument ist.
Field XY := @IF(.......
Und das funktioniert auch immer noch , wenn da keine falsche Formel drin steht.
Schon länger macht man das aber eher im PostOpen mit source.IsNewDoc.
-
Genau: Die Felder sollen befüllt werden, wenn ein neues Dokument angelegt wird.
Die Berechnungen finden eben zentral in einem Feld statt.
So wie es aussieht, scheint das ja wirklich technisch nicht möglich zu sein, d.h. ich muss zwingend PostOpen mit source.IsNewDoc verwenden?
-
Ähem, https://atnotes.de/index.php/topic,62500.msg399300.html#msg399300
-
@eknori: Da habe ich mich missverständlich ausgedrückt, in den bearbeitbaren Feldern sollen ANDERE Werte stehen als in dem berechneten Feld
-
Sorry, ist mir zu hoch.
Damit versuche ich u.a. (beim Erstellen des Dokumentes) Werte in andere, bearbeitbare Felder schreiben.
Du willst den berechneten Wert in andere items schreiben, aber dann doch nicht ...
-
In dem berechneten Feld wird u.a. ein Auswahlmenü gestartet, aus dem der User eine Option auswählt.
Abhängig davon möchte ich dann Werte in andere Felder schreiben.
Das ist leider schon eine ältere Anwendung, die ich auch nicht komplett umbauen möchte. Weil es muss ja alles schnell gehen und darf nix kosten ;D
-
Du hast also ein berechnet bei Erstellen Feld, das nach der Auswahl durch den User einen bestimmten Wert enthält.
Jetzt soll in Abhängigkeit von diesem Wert in item A Wert A und in item B Wert B geschrieben werden.
Du verwurschtelst also den Ausgangswert in ganz vielen If Abfragen und möchtest dann in item A und Item B schreiben.
Warum drehst du den Spieß nicht einfach um?
Nimm meine Formel, und füge die Bedingungen hinzu, die für item A / item B gelten sollen
@If(@IsNewDoc;@if(cwcItem>="WasWeissich";"Wert Item A";"Was anderes");@ThisValue)
und im default für item B
@If(@IsNewDoc;@if(cwcItem="PasstScho";"Wert Item B";"Was ganz anderes");@ThisValue)
-
Danke für alle Tipps!
Ich werde den Spieß umdrehen und es auf mehre Felder verteilen.