[gelöst] Decimal-Variable mit 3 Nachkommastellen

11. Dezember 2006 12:42

Hallo zusammen,

leider hänge ich etwas bei meinem Versuch unsere Auftragsform zu optimieren.

Ich möchte über eine Input-Prozedur die Artikel-Menge abfragen.

Eigentlich auch nicht weiter tragisch: eine Variable (Decimal), dann einen Dialog mit entsprechendem Input-Befehl und letzt-endlich den Wert der Variable an Menge übergeben.

Nun mein Problem:
Variabeln vom Data Type Decimal besitzen grundsätzlich 2 Nachkommastellen. Ich brauche aber eine Variabel mit 3 Stellen nach dem Komma!

Hat jemand eine Idee, wie ich das meiner Variabel beibringen kann?

Danke
Gruß
Zuletzt geändert von Dune am 12. Dezember 2006 13:24, insgesamt 1-mal geändert.

11. Dezember 2006 12:58

"Sage" es in den Properties der Eigenschaft "DecimalPlaces" z. B. mit 3:3, dann hast du immer drei Nachkommastellen.

Grüße
Gerhard

11. Dezember 2006 13:06

Hallo Gerhard,

danke für deine Hilfe.

Das würde ich ja tun, aber leider scheint es bei Globel-Variabeln nicht möglich zu sein derartige Properties zu setzten.
Lasse ich mir die Properties zu der entsprechenden Variable anzeigen, kann ich lediglich die "Dimensions" bearbeiten, aber leider keine Spur von "DecimalPlaces".

Vielleicht noch ´ne Idee?

11. Dezember 2006 13:09

Oh, sorry, bin wohl leider ins falsche Forum gerutscht.

Meine Frage bezieht sich auf Dynamics NAV 2.xx.

11. Dezember 2006 13:17

Dune hat geschrieben:Oh, sorry, bin wohl leider ins falsche Forum gerutscht.

Meine Frage bezieht sich auf Dynamics NAV 2.xx.


Kein Problem, dein Problem ist versionsunabhängig.

Zwei Möglichkeiten:
1) Du "formatierst" die Ausgabe der Variablen vor der Ausgabe
2) Du verwendest ein eigenes Tabellenfeld für die Ausgabe, dann funktioniert auch die Formatierung mittels DecimalPlaces

2) ist aber nur zu empfehlen, wenn dies eine "Standardeinrichtung" sein soll, sprich es nicht nur für einen Report, bzw. wird nur ein Mal benötigt :wink:

Grüße
Gerhard

11. Dezember 2006 13:58

Ergänzung zu Möglichkeit 1:

FormatText := FORMAT(DezimalWert,0,'<Precision,3:3><Standard Format,0>');

Re: Decimal-Variable mit 3 Nachkommastellen

11. Dezember 2006 14:03

Dune hat geschrieben:Variabeln vom Data Type Decimal besitzen grundsätzlich 2 Nachkommastellen. Ich brauche aber eine Variabel mit 3 Stellen nach dem Komma!

Decimalvariablen werden mit 18 signifikanten Stellen im System geführt.
Wenn diese abgeschnitten werden, liegt das immer an Eingabeformatierungen oder ggf. späteren Rundungen im Code.

11. Dezember 2006 16:19

Sorry, dass ich so spät antworte, aber so richtig kann ich da noch nicht folgen.

stryk: mit deiner Code-Zeile bekomme ich dann als Ergebnis Text, oder? Mit Text kann ich aber nachher nicht mehr rechnen.

Kowa: komischerweise hab ich nur eine Variable als Decimal deklariert und schon läßt mir Navision nur noch 2 Nachkommastellen zu.

Wahrscheinlich steh ich jetzt völlig auf´m Schlauch, aber ich zerbrech mir immer noch den Kopf.

Mein Code sieht in etwa so aus:

ArtMenge = Decimal
Code:
window.open('Menge #1####', ArtMenge);
window.input(1,ArtMenge);
Menge := ArtMenge
Betrag := ArtMenge * VKPreis;


Schon in der Input-Box kann ich nur 2 Stellen nach dem Komma eingeben.

Könntet ihr mir nochmal helfen?
Danke

[hr][Code in [code]-Blöcke gepackt, damit er lesbarer ist. Gruß, Timo][hr]

11. Dezember 2006 16:27

stryk: mit deiner Code-Zeile bekomme ich dann als Ergebnis Text, oder? Mit Text kann ich aber nachher nicht mehr rechnen.
Für Rechenoperationen brauchst du ja auch nicht Nachkommastellen DAZU-definieren; deine Frage betrifft nur die Anzeige-Form und daher ist stryks Befehl schon richtig (und wird z.B. in Reports verwendet). Bezieht sich die Ausgabe dagegen auf eine Form, dann musst du eben auf Tabellen- oder Formebene die DecimalPlaces-Eigenschaft setzen.

11. Dezember 2006 16:34

Hi Natalie,

jetzt verstehe ich glaub ich langsam. Das war wohl ein Mißverständnis.

Also werd ich wohl keine Input-Box erzeugen können in der man dann eine Dezimalzahl mit 3 Nachkommastellen eingeben kann?
Bleibt nur noch Striker´s zweiter Vorschlag: eine weitere Form zu basteln?

11. Dezember 2006 17:09

Bleibt nur noch Striker´s zweiter Vorschlag: eine weitere Form zu basteln?

Ich denke ja ... hab' Deinen Code eben ausprobiert und was dazu gelernt :idea: ... nur 2 Dezimalstellen im INPUT Dialog ... Bug or Feature?

11. Dezember 2006 17:14

stryk hat geschrieben:
Bleibt nur noch Striker´s zweiter Vorschlag: eine weitere Form zu basteln?

Ich denke ja ... hab' Deinen Code eben ausprobiert und was dazu gelernt :idea: ... nur 2 Dezimalstellen im INPUT Dialog ... Bug or Feature?


Der INPUT Dialog ist so alt wie Navision selbst und hat sich bislang leider nicht geändert, sprich das Teil ist wirklich uralt, unkonfortabel und ... na ja, lassen wir das besser :wink:

11. Dezember 2006 17:25

Richtig. Auf das INPUT "Ding" sollte man weitgehend verzichten.

@Dune: Noch'n Nachtrag: Wenn Du auf den INPUT Dialog nicht verzichten möchtest, so könnte man sich u.U. damit behelfen, die ArtMenge soz. x 1000 einzugeben; z.B. statt 1,234 eben 1234, und diese Zahl dann via Code durch 1000 teilen:
Betrag := ArtMenge/1000 * VKPreis;

Nicht schön ... 'n "workaround" eben ...

11. Dezember 2006 17:26

Naja gut, aber nur dafür eine neue Form zu gestalten ist auch Käse.

Ok, es scheint da wohl keine andere Möglichkeit zu geben.

Danke an alle. Bis dann.

11. Dezember 2006 20:15

Dune hat geschrieben:Oh, sorry, bin wohl leider ins falsche Forum gerutscht.

Meine Frage bezieht sich auf Dynamics NAV 2.xx.

Kein Problem, habe es mal eben verschoben.

Gruß, Timo Lässer
MSDynamics.de-Team

12. Dezember 2006 12:11

Hallo nochmal,

der Vollständigkeit halber und damit Andere nicht ähnliche Kopfschmerzen bekommen, hier die Lösung:

Die Input-Box bleibt, auch die Variabeln bleiben, lediglich die Mengenabfrage wird erst über Text gelöst und später mit EVALUATE in Decimal geändert.
Damit habe ich drei Nachkommastellen!

Ich gebe zu, die Lösung ist aufwendiger zu programmieren und einige Fehleingaben müssen codetechnisch abgefangen werden, aber immer noch besser als eine neue Form zu erstellen.

Ich danke euch allen für eure Hilfe.