我正在维护一个在两个位置使用的客户端的应用程序.一个在英格兰,一个在波兰.
该数据库存储在英格兰,并使用格式£1000.00作为货币,但信息正在波兰本地收集,其中1000,00是格式.
我的问题是,在VB6中有一个函数,它采用本地格式的货币字符串并转换为另一个,或者我只需要解析字符串并替换,或者.?
顺便说一句,我看过CCur,但不确定这是否能满足我的需求.
数据实际上并不存储为字符串"£1000.00"
; 它以某种数字格式存储.
边栏:通常,数据库设置为使用十进制数据类型(在某些DB中也称为money)或浮点数(也称为double)来存储金额.
不同之处在于,当它以十进制形式存储时,某些数字(如0.01)会被精确表示,而在双数中,这些数字只能近似存储,从而导致舍入误差.
数据库似乎存储了数字,"£1000.00"
因为有些东西正在格式化以便显示.在VB6中,有一个函数FormatCurrency
可以取1000个数字并返回一个字符串"£1000.00"
.
您会注意到该FormatCurrency
函数没有使用参数来指定要使用的货币类型.这是因为它与VB中所有其他特定于语言环境的函数一起,从系统的当前语言环境(从Windows控制面板)中计算出货币.
这意味着在我的系统上,
Debug.Print FormatCurrency(1000)
将打印$1,000.00
,但如果我在设置为英国语言环境的Windows计算机上运行相同的程序,它可能会打印£1,000.00
,当然,这是完全不同的东西.
同样地,你有一些代码,在某个地方,我不知道在波兰看来,它负责解析用户的字符串并将其转换为数字.如果该代码在Visual Basic中,那么它依赖于控制面板来决定是否"." 或","是千位分隔符,无论是","还是"." 是小数点.
该函数CDbl
将其参数转换为数字.例如,在我在美国的系统上
Debug.Print CDbl("1.200")
产生第一点二,在控制面板设置为欧洲格式的系统上,它将产生数字一千二百.
可能的问题是,有人坐在计算机上,区域控制面板设置为使用".".作为小数点分隔符,但它们键入","作为小数点分隔符.