msaccess-navision-mssql-dezimal

Dezimalverarbeitung in MSAccess – SQl-Server Navision

Der Dezimaldatenty wird verwendet um Rundungsfehler zu vermeiden. Im MSSql Server wird dieser angegeben mit dezimal(xx,yy)  wobei xx die Länge der gesamten Zahl ist und yy die Anzahl der Stellen nach dem Komma.

Ein Beispiel:

Dezimal(12,3) kann sein 999.999.999,999

Problem von MSAccess auf MSSql Dezimal (Navision)

Information Sql Server  link

Information MSAccess link

Wenn man in Navision einen Zahlentype angibt mit Dezimal und z.B. 3 Kommastellen wird dieser im SQL Server dann mit dezimal(38,20) angelegt (warum verstehe ich nicht, notwendig ist es nicht!) dies ist das Problem Access kann so eine große dezimalzahl nicht darstellen und ändert den Datentype in Text. Dies hat den Nachteil das man diesen sehr kompliziert in eine Zahl umwandeln.

Ein test

Ich habe verschiedene Dezimalzahlen im SQL Server angelegt und getestet wie dieser im Access dargestell wird. Ich verwende den ODBC Treiber Microsoft SQL Nativ Client 11.0

Man kann sehen wenn die Dezimalzahl > 28 ist wird diese als Text interpretiert.

 

Beispiel Text in Zahl umwandeln

man muss erst mit Replace/Ersetzen (je nach Access Version EN/DE)den punkt in ein Komma umwandel und dann diesen String in eine Zahl umwandeln

Nachfolgendes Beispiel kann in einer Abfrage benutzt werden:

Das Originalfeld in der Tabelle heißt Zahlenwert und wird in ZahlenwertZahl umgewandelt

ZahlenwertZahl : ZDouble(Ersetzen(Zahlenwert;”.”;”,”))

 

Bessere Lösung

Das Datenformat auf dem SQL Server anpassen dann kann die Zahl ganz normal verwendet werden.

 

 

 

 

No Comments

Post A Comment