Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Andreas Huhn am 14.12.05 - 14:45:59
-
Hallo,
das klappt gerade nicht so wie ich will. Ein Beispiel:
txt1 (Text, Bearbeitbar) -> 10
txt2 (Text, Bearbeitbar) -> 5
Los (Hotspot) -> @SetField("erg" ; @TextToNumber(txt1) / @TextToNumber(txt2))
erg (Text, Bearbeitbar) ->
danach wird das Ergebnis in erg angezeigt.
ABER:
txt1 (Text, Bearbeitbar) -> 10
txt2 (Text, Bearbeitbar) -> 5
erg2 (Text, Berechnet) -> @Text(@TextToNumber(txt1) / @TextToNumber(txt2))
In erg2 steht dann: Falscher Datentyp für Operator oder @Funktion: Text erwartet
Aber ich nehme doch die Konvertierung in den Datentyp Text explizit vor !?
Könnt ihr mir sagen was ich falsch mache?
Andreas
-
Haben die beiden Felder txt1 und txt2 einen Initalwert drin? Wenn da nichts steht hat Notes ein Problem.
evtl. müsst e da in erg2 noch ein @iferror ran
-
Du meinst Vorgabewert? 5 und 10 sind die jeweiligen Vorgabewerte!
-
Hallo,
meines Erachtens möchtest du hier zwei Textwerte teilen: @SetField("erg" ; @TextToNumber(txt1) / @TextToNumber(txt2))
Besser wäre: @SetField("erg" ; @TextToNumber(txt1 / txt2))
Versuche es mal.
-
Morgen Jor,
der @SetField Aufruf ist ja erfolgreich! Die zweite Variante darunter bringt die Fehlermeldung. Auch wenn ich das Ergebnis gemeinsam in eine Zahl konvertiere. Das war es also leider nicht...
-
Hat dein erg2-Feld irgendwo in einem Ereignis noch eine Umrechnung oder ähnliches stehen?
Weil die Übergabe an erg2 doch eigentlich ganz gut aussieht.
-
Hi,
steht das Feld erg2 in der Maske vor bzw. über den anderen Feldern?
-
@ Jor,
nein, das Feld hat sonst keine Funktionalitäten hinterlegt.
@rar,
nein, von den genannten Feldern ist es das unterste in der Maske. Aber könnte es wirklich an der physischen Anordnung der Felder liegen wenn so ein Fehler zustande kommt??
-
Ja. Die Maske wird von links oben nach rechts unten aufgebaut. Wenn du ein neues Dokument erstellst, in dem 2 Felder Vorgabewerte haben und das berechnete Feld ganz oben steht, wird erst erst das berechnete befüllt und dann die Vorgabewerte. Dadurch kommt beim ersten Feld ein falsches Ergebnis raus weil die beiden unteren Felder noch leer sind.
-
Okay... halte ich aber für eine Schwäche von Notes wenn ich beim Aufbau und Design der Maske auf die beabsichtigten Verbindungen der Gestaltungselemente untereinander acht geben muß. Aber die Lösung für mein Problem ist es trotzdem nicht. Hab jetzt alles zu Zahlfeldern gemacht um es zu umgehen, soweit funktioniert es wenigstens. Aber verständlich warum es mit der TypKonvertierung nicht klappt ist es immer noch nicht.
-
Mach das hier daraus dann funktioniert das:
rg2 (Text, Berechnet) -> @Text(@TextToNumber(@text(txt1)) / @TextToNumber(@text(txt2)))
-
Okay... halte ich aber für eine Schwäche von Notes wenn ich beim Aufbau und Design der Maske auf die beabsichtigten Verbindungen der Gestaltungselemente untereinander acht geben muß.
Ist meines Erachtens aber keine Schwäche. Man muss es nur wissen. Manchmal ist es sogar sehr nützlich, wenn man diesen Mechanismus ausnutzen kann.
Axel
-
Also bei mir funktioniert es genau wie du es beschrieben hast, Andreas.
Schaus dir mal in meiner DB an!
-
Hallo Thomas,
ja so funktioniert es tatsächlich. Aber warum? Das was tu getan hast ist daß du den Inhalt von txt1 und txt2 nochmal explizit in einen Text gewandelt hast. Aber diesen Datentyp sollten die Inhalte der Felder vom Typ Text doch ohnehin haben dachte ich!? Auf diese Idee wäre ich wohl nie gekommen da es meiner Meinung nach redundant ist.
@ Axel,
hab ich halt bisher anders gesehen weil mir noch kein Vorteil daraus erwachsen ist ;-) Aber du hast recht.. gut zu wissen!
@ rar,
Habs mir angesehen. Genauso siehts bei mir auch aus, auch die Feldeinstellungen etc. nur daß darunter noch ein paar Felder kommen. Aber das sollte ja normal nichts zur Sache tun. Sehr merkwürdig das!
-
Ja mei, warum funktioniert das.
Ich weis das der Typ eines Feldes nicht notwendigerweise festgelegt ist solange das Dokument in dem das Feld steht noch nicht gespeichert ist. Und das auch dann wenn du in der Form dieses Feld als Text definiert hast. Wenn du das Dokument einmal speichern würdest ohne das die Berechnung feuert dann würde das auf jeden Fall funktionieren.
Ich mach in solchen Fällen halt immer ein @text um den Begriff drum herum und geh dem Problem damit aus dem Weg. Ist einfach Erfahrungssache.
-
... eine Erfahrung die ich nun auch gemacht habe.... Werde versuchen mir das auch anzugewöhnen.
Danke Thomas.
Gruß,
Andreas
-
oder aber Du nutzt die neuen Funktionen in R6, die solche Krücken überflüssig machen.
@TextToNumber liefert immer dann einen Fehler, wenn der übergabewert bereits eine Nummer ist. Das ist quatsch, weil man dann ja immer nen @Text um seinen Wert machen muss.
Nimm die in R6 neue Funktion @ToNumber( ) , der ist nämlich der "eingangswert" egal, die macht immer eine Zahl draus, auch wenn's schon eine war...
HTH
Tode