Domino 9 und frühere Versionen > ND8: Entwicklung
Angabe nummerische Konstante in @Function
sudsaat:
Hi zusammen,
ich stehe vor einem kleinen Problem mit der Angabe einer nummerischen Konstanten in @Functions. Ich habe eine datenbank, die auf verschiedenen Systemen entwickelt wird (Betriebssystem in Deutsch, Englisch und Schweiz & Domino-Designer in Deutsch und Englisch) mit unterschiedlichen Einstellungen für die Zahlenformate.
Jetzt benötige ich eine Formel mit nummerischen Konstanten um eine Rundung durchzuführen. Exemplarisch hier ein kleiner Auszug aus der Formel, die mir Probleme bereitet:
--- Code: ---@If( (PosSteuerSatz != "") & (PosBetragNetto != "");
steuer := @Round(PosBetragNetto / 100 * PosSteuerSatz; 0,05);
steuer := 0);
--- Ende Code ---
Die Konstante 0,05 ist mein Problem. Je nachdem auf welchem System ich diese Formel speichern will, meckert der Domino-Designer wegen falscher Formatierung.
Auf einem deutschen System mit englischem Designer (und deutschen locales) kann ich die Formel (verkürzt) so schreiben:
steuer := @Round(PosBetragNetto / 100 * PosSteuerSatz; 0,05); <- Komma als Trenner
Möchte ich die Formel auf einem englischen System speichern, nimmt der Designer sie nur mit "." als Trenner an:
steuer := @Round(PosBetragNetto / 100 * PosSteuerSatz; 0.05); <- Punkt als Trenner
Gibt es eine Möglichkeit, die Formel allgemeingültig zu schreiben, sodass sie, egal in wecher Spracheinstellung, gespeichert werden kann? Sowas wie
@Property("number.decimal.separator")
oder ähnliches?
..das ganze zieht sich leider auch nach Lotus-Script durch, da dort (auf Grund der Rundungsproblematik in Notes) mit Evaluate gearbeitet wird und der Script-Compiler ebenfalls diese Formel mit der Fehlermeldung anmeckert: Error in Evaluate-Macro
steuer = Evaluate(|@Round(roundme; 0,05)|, doc)
Freue mich auf euer Feedback
Grüße Thomas :-)
Peter Klett:
ungetestet, probier mal
--- Code: ---_tmp := 5 / 100;
@Round(PosBetragNetto / 100 * PosSteuerSatz; _tmp);
--- Ende Code ---
EDIT: Oder in einer Zeile für das Evaluate
--- Code: ---@Round(PosBetragNetto / 100 * PosSteuerSatz; 5 / 100);
--- Ende Code ---
sudsaat:
Hi Peter,
gute Idee - danke!
Wie wäre das aber grundsätzlich, wenn es nicht gerade eine "glatte" Zahl wie hier "0,05" wäre? Gibt es da einen Ansatz oder ist die Angabe generell über eine Berechnung zu realisieren?
Grüße Thomas :-)
Mitch:
Huhu,
ich würde die Zahl lieber in ein (Konfigurations-)dokument auslagern und dann immer frisch ziehen. Aus einem ordentlichen Zahlen-Item solltest du immer das korrekte Format zurück bekommen.
Magische Zahlen würde ich ohnehin möglichst vermeiden und es ist außerdem auch viel einfacher anzupassen wenn sich der Wert in der Zukunft mal ändern sollte.
Gruß,
Mitch
sudsaat:
Hi Mitch,
danke für dein Feedback, das wäre auch eine Idee, aber die Berechnungsformeln werden in einer Benutzeraktion so oft verwendet und sind mit festen Konstanten einfach performanter als jedesmall einen Zugriff auf ein (Profil-)Dokument..
Grüße Thomas ;-)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln