[Gelöst] Nachkommastellen mit <Precision>

10. November 2008 18:11

Wahrscheinlich bin ich wieder zu ungeschickt um richtig zu suchen oder schon zu blind zum Lesen: ich hab jetzt knapp 1h gebraucht um rauszufinden das die Länge in <Precision> das Dezimaltrennzeichen beinhaltet. Wenn man also 2 Dezimalstellen möchte dann sollte man tunlichst <Precision,3:3> angeben.
Ich hab alle gefundenen Beiträge hier zu Precision gelesen und auch noch ein paar gegoogelte - aber den Hinweis habe ich nirgends gefunden.

Wenn ihr den Beitrag für überflüssig haltet schmeisst ihn raus - ich weis ja jetzt wie es geht.

Re: [Gelöst] Nachkommastellen mit <Precision>

10. November 2008 18:16

?
wimre wird im Standard der Betrag doch in 2:2 angegeben. Und das klappt bei den meisten Kunden doch auch ganz gut?

Re: [Gelöst] Nachkommastellen mit <Precision>

10. November 2008 19:21

:?: Kann ich nicht nachvollziehen. Was genau wird formatiert ?
Code:
<Precision,3:3><Standard Format,0>

Liefert 3 Nachkommastellen. Kann zur Kontrolle in jeder Form im Format-Property von einem Dezimalfeld (z.B. Lagerbestand auf der Artikelkarte) eingeben werden ( solange für das Feld hier oder auf Tabellenebene nicht schon bei
AutoFormatType und AutoFormatExpr etwas steht, die nehmen auch Formatierungen vor (anhand der Stückpreis und Betragsrundungspräzision, ggf. in Kombination mit einer Währung, z.B. im Feld 22 "VK-Preis" in der Tabelle 37 Verkaufszeile ) und übersteuern dann auch die DecimalPlaces-Property.

Beim komplett händischen Aufbau mit eventuellem Zusatz <Decimals,3> in der FORMAT-Funktion dagegen muss das Dezimaltrennzeichen mitgezählt werden.
Beispiel :
Ein Bestand von 28 Stück wird mit
Code:
<Sign><Integer,6><Filler Character,0><Decimals,3><Comma,.>
formatiert : 000028.00
Code:
<Sign><Integer,6><Filler Character,0><Decimals,4><Comma,->
formatiert : 000028-000
Code:
<Sign><Integer,8><Filler Character,x><Decimals,4><Comma,*>
formatiert : xxxxxx28*000

Bei einem Bestand von 28,5001 würde dagegen bei
Code:
<Sign><Integer,6><Filler Character,0><Decimals,3><Comma,.>
formatiert : 000028***. Weil die Formatierungsvorgabe nicht mehr vollständig dargestellt werden kann, kommt die übliche Sternchenkette hier als Warnung.

Bei
Code:
<Precision,3:3><Standard Format,0>
dagegen wird entweder
formatiert : 28,500 ( in den „Komma-Ländern“ Deutschland und Österreich) oder
formatiert : 28.500 ( in dem „Punkt-Land“ Schweiz)
Hier greifen dann die Windows-Ländereinstellungen.

Re: [Gelöst] Nachkommastellen mit <Precision>

11. November 2008 10:05

Das ist ja komisch. Ich bin mit nem Dataport unterwegs - kann es sein das der Unterschied daher kommt?
Die Expression wird berechnet - insofern dürfte keine Feld-Einstellung aus einer Tabelle irgendwie eingreifen.

Mein Testscenarium:
Dataport-Feld
Source-Expression: 3660/100
Format: <Integer><Decimals,2><Comma,.><Precision,2:2>
der Rest der Konfigurationsmöglichkeiten auf Feldebene sind unverändert.

und raus kommt dabei: 36.6
gewünscht war aber: 36.60
Seitdem ich alle 2en durch 3en ersetzt hab ist das Ergebnis wie gewünscht.

NAV 4.0/SP3

Re: [Gelöst] Nachkommastellen mit <Precision>

11. November 2008 11:08

WoF hat geschrieben:Format: <Integer><Decimals,2><Comma,.><Precision,2:2>

Liegt am Decimals, wie schon oben beschrieben,
<Decimals,3> statt <Decimals,2>. Am Precision liegt es nicht.
Außerdem kann bei solcher Formatierung die Sternchenkette auftauchen, in meinem Fall 28***, wenn der Wert z.B. 28,001 beträgt. Das sollte also ausgeschlossen sein. In deinem Fall ist es das ja, aber üblicherweise ist die SourceExpr ja ein Feld oder eine Variable, die auch mal mehr Nachkommastellen haben können. Sonst gibt man hier Datenmüll aus.

Re: [Gelöst] Nachkommastellen mit <Precision>

11. November 2008 12:32

Interessant. Nun hab ich mal
Source-Expression: 3660/100+0.040666
Format: <Integer><Decimals><Comma,.><Precision,2:2>
versucht.
Ergebnis: 36.640666
Soweit ich das jetzt verstehe muss ich durch ROUND veranlassen das das Ergebnis die richtige Länge hat (nicht zu lang sonst ***!) und mit Decimals erzwinge ich die Darstellung der angehängten 0en. Precision brauche ich gar nicht bzw. das Schlüsselwort wird ignoriert.
Format: <Integer><Decimals,3><Comma,.><Precision,2:2> -> 36***
Format: <Integer><Decimals,3><Comma,.><Precision,2:3> -> 36***
Format: <Integer><Decimals,3><Comma,.><Precision,3:3> -> 36***
Format: <Integer><Precision,3:3><Decimals,3><Comma,.> -> 36*** // idee: navision interpretiert die worte von links nach rechts und ausführt sie sofort aus. Dann würden die *** schon von dem Decimals draufstehen und Precision kann nicht arbeiten.

Mir fällt jetzt nix mehr ein was man noch testen kann um rauszukriegen ob und wie <Precision> Einfluss nimmt.