Die Daten werden nicht tatsächlich als Zeichenfolge gespeichert "£1000.00"
; Es ist in einem numerischen Format gespeichert.
Sidebar: Normalerweise sind Datenbanken aufgebaut Geldmengen zu speichern, unter Verwendung entweder des decimal Datentyp (auch Geld in einigen DBs genannt), oder als eine Gleitkommazahl (auch Doppel genannt).
Der Unterschied besteht darin, dass, wenn es als decimal bestimmte Zahlen wie 0,01 genau dargestellt werden, während gespeichert ist in Doppel diese Zahlen können nur etwa gespeichert werden, was zu Rundungsfehlern.
Die Datenbank erscheint die Zahl als "£1000.00"
zu speichern, weil etwas ist für die Anzeige der Formatierung. In VB6 gibt es eine Funktion FormatCurrency
, die eine Zahl wie 1000 nehmen und eine Zeichenfolge wie "£1000.00"
zurückgeben würde.
Sie werden feststellen, dass die Funktion FormatCurrency
kein Argument verwendet, das angibt, welche Art von Währung verwendet werden soll.Das liegt daran, dass es zusammen mit allen anderen länderspezifischen Funktionen in VB die Währung aus dem aktuellen Gebietsschema des Systems (in der Windows-Systemsteuerung) ermittelt.
, dass diese auf meinem System bedeutet,
Debug.Print FormatCurrency(1000)
wird $1,000.00
drucken, aber wenn ich laufe die gleiche Programm auf einem Computer mit Windows auf den britischen locale, ist es wahrscheinlich £1,000.00
gedruckt werden , was natürlich etwas völlig anderes ist.
In ähnlicher Weise, Sie haben irgendwo Code, ich kann nicht sagen, wo, in Polen, es scheint, ist verantwortlich für die Analyse der Zeichenfolge des Benutzers und die Umwandlung in eine Zahl. Und wenn sich dieser Code wieder in Visual Basic befindet, entscheidet er sich auf dem Control Panel, ob "." oder "," ist das Tausendertrennzeichen und ob "," oder "." ist der Dezimalpunkt.
Die Funktion CDbl
wandelt ihr Argument in eine Zahl um. So zum Beispiel auf meinem System in den USA
Debug.Print CDbl("1.200")
der Nummer eins Punkt zwei erzeugt, auf einem System mit der Systemsteuerung auf europäische Formatierung festgelegt, würde es die Nummer eins tausend, zwei produzieren hundert.
Es ist möglich, dass das Problem darin besteht, dass Sie jemanden haben, der einen Computer mit dem regionalen Steuerungsfeld zur Verwendung von "." als Dezimaltrennzeichen, aber sie geben "," als Dezimaltrennzeichen ein.