Währung im Textfeld

19/09/2007 - 08:31 von George Löwer | Report spam
Hi @ll,

wenn man ein Textfeld mit Format(Zahl,"Currency") füllt steht im
Deutschenbereich meistens "Zahl ?" drin.
Wenn man diese Zahl auslesen will klappt das mit CDBL(Textfeld) wunderbar.
Im Polnischen z.B. wird nach Format(Zahl,"Currency") ins Textfeld
eingetragen "Zahl zl".
Dieses erkennt CDBL aber nicht als Zahl, sondern liefert einfach nur 0.
Woran liegt das.


MfG George Löwer
 

Lesen sie die antworten

#1 Peter Götz
19/09/2007 - 11:12 | Warnen spam
Hallo George,

wenn man ein Textfeld mit Format(Zahl,"Currency")
füllt steht im Deutschenbereich meistens "Zahl ?" drin.



Üblicherweise wird bei einem deutschen System in der
Systemsteuerung -> Làndereinstellungen -> Wàhrung
das Euro-Symbol als Wàhrungskennzeichen eingestellt
sein und genau dieses wird dann beim Formatieren von
Zahlen mit Format$(Zahl, "Currency") an den daraus
resultierenden String angehàngt.
Wenn Du dort ein "?" (Fragezeichen) siehst, dürfte Dein
System wohl alles andere als auf dem akt. Stand sein.

Wenn man diese Zahl auslesen will klappt das mit
CDBL(Textfeld) wunderbar.



Warum denn mit CDBL(), wenn Du den Betrag als
"Currency" formatiert hast. Sinnvoll und logisch wàre dann
die Rückwandlung des Strings zu einem numerischen Wert
mit cCur(Textbox.Text) zu machen.

Im Polnischen z.B. wird nach Format(Zahl,"Currency") ins
Textfeld eingetragen "Zahl zl".



Na ja, weil eben in Polen üblicherweise mit Zloty gerechnet
wird und die dortigen Benutzer auf ihren Systemen in aller
Regel in der Làndereinstellung eben "zl" als Wàhrungs-
kennzeichen eingestellt haben.

Dieses erkennt CDBL aber nicht als Zahl,
sondern liefert einfach nur 0.
Woran liegt das.



Wie genau sieht denn der entspr. Code aus?
Wenn in der Làndereinstellung des betr. Rechners "zl"
als Wàhrungssymbol eingestellt ist, sollte cDBL() schon
auch funktionieren, aber sinnvollerweise soltest Du
für die Umwandlung nicht cDBL() sondern cCur()
verwenden und die weitere Verarbeitung solcher Betràge
in entsprechenden Variablen vom Typ Currency
vornehmen.

Dim curBetrag as Currency
Dim curBetragX as Currency
Dim strBuffer as String

curBetrag = 1235.45

' Umwandlung num. Wert (Currency) nach String
strBuffer = Format$(curBetrag, "Currency")

' Umwandlung String nach num. Wert (Currency
curBetragX = cCur(strBuffer)

Die Umwandlungsfunktionen cSng(), cDBL(), cCur()
interpretieren als Dezimaltrenner in einem an sie
übergebenen String immer das in der Làndereinstellung
vorgegebene Zeichen. Also beispielsweise das ","
(Komma) bei einem deutschen System und den "."
(Punkt) auf einem englischen System.

Dagegen interpretiert die Umwandlungsfunktion Val()
immer den Punkt als Dezimaltrenner, egal was in der
Làndereinstellung als Dezimaltrenner vorgegeben ist.

Zum Umwandeln von Ausdrücken, die einen Geldbetrag
mit angehàngtem Wàhrungsymbol darstellen, verwende
die Umwandlungsfunktion cCur(), was auch noch den
Vorteil hat, dass der Datentyp Currency ein skalierter
Ganzzahltyp ist und es damit nicht zu den bei Single
oder Double möglichen Rundungsfehlern kommt.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen