Autor Thema: Angabe nummerische Konstante in @Function  (Gelesen 2449 mal)

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Angabe nummerische Konstante in @Function
« am: 14.07.14 - 14:47:21 »
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);

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 :-)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Angabe nummerische Konstante in @Function
« Antwort #1 am: 14.07.14 - 15:09:22 »
ungetestet, probier mal

Code
_tmp := 5 / 100;
@Round(PosBetragNetto / 100 * PosSteuerSatz; _tmp);


EDIT: Oder in einer Zeile für das Evaluate
Code
@Round(PosBetragNetto / 100 * PosSteuerSatz; 5 / 100);
« Letzte Änderung: 14.07.14 - 15:14:17 von Peter Klett »

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Angabe nummerische Konstante in @Function
« Antwort #2 am: 14.07.14 - 15:21:41 »
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

  • Gast
Re: Angabe nummerische Konstante in @Function
« Antwort #3 am: 14.07.14 - 15:22:03 »
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

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Angabe nummerische Konstante in @Function
« Antwort #4 am: 14.07.14 - 15:27:15 »
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 ;-)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Angabe nummerische Konstante in @Function
« Antwort #5 am: 14.07.14 - 15:32:28 »
Wie wäre das aber grundsätzlich, wenn es nicht gerade eine "glatte" Zahl wie hier "0,05" wäre?
Was verstehst Du unter einer nicht glatten Zahl, die Du als Konstante verwenden willst?

Vielleicht 1,23456789?

Das kannst Du immer irgendwie ausrechnen

123456789 / 100000000

Mitch

  • Gast
Re: Angabe nummerische Konstante in @Function
« Antwort #6 am: 14.07.14 - 15:45:35 »
(...) 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 (...)

Jeder wie er mag, aber dass das - richtig gemacht - einen messbaren Einfluss auf die Performance hat, wage ich zu bezweifeln. Mit statistischen Daten zu dem Thema kann ich allerdings auch nicht dienen. ;)

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Angabe nummerische Konstante in @Function
« Antwort #7 am: 14.07.14 - 16:04:29 »
Hi Peter,

hast recht .. vergiss die Frage :-)

@Mitch: Über eine langsame Leitung ist der Unterschied (leider) zu spüren.. Wobei ich hier nicht mehr weiß, ob beim Test ein Profildokument oder "normale" Konfigurationsdokumente schneller waren ..

Grüße Thomas :-)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Angabe nummerische Konstante in @Function
« Antwort #8 am: 14.07.14 - 16:06:51 »
Profildokumente werden nach dem Öffnen der DB nur einmal geöffnet (und über eine interne Table adressiert) und danach im Cache gehalten.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz