Vb6 本地货币字符串转换

Vb6 本地货币字符串转换,vb6,localization,internationalization,Vb6,Localization,Internationalization,我正在为在两个位置使用的客户端维护一个应用程序。一个在英国,一个在波兰 该数据库存储在英国,使用1000.00英镑的货币格式,但信息在波兰本地收集,其中1000,00为货币格式 我的问题是,在VB6中,是否有一个函数可以将本地格式的货币字符串转换为另一种格式,或者我只需要解析字符串并替换,或者 顺便说一句,我看过CCur,但不确定它是否能满足我的要求 您使用的是什么数据库?存储量的数据类型是什么 只要您总是从一种格式转换到另一种格式,您就不需要进行任何解析,只需将“.”替换为“.”,或者以其他方

我正在为在两个位置使用的客户端维护一个应用程序。一个在英国,一个在波兰

该数据库存储在英国,使用1000.00英镑的货币格式,但信息在波兰本地收集,其中1000,00为货币格式

我的问题是,在VB6中,是否有一个函数可以将本地格式的货币字符串转换为另一种格式,或者我只需要解析字符串并替换,或者


顺便说一句,我看过CCur,但不确定它是否能满足我的要求

您使用的是什么数据库?存储量的数据类型是什么


只要您总是从一种格式转换到另一种格式,您就不需要进行任何解析,只需将“.”替换为“.”,或者以其他方式替换。如果字符串中存储了“镑”-符号,则可能还需要删除它。

对于区域性对象之类的问题,可能有一个正确的答案,但最简单的方法是从波兰语输入中获取输入,并将其替换为,。然后将其作为“money”或“decimal”类型存储在数据库中。如果您知道他们(可能每个用户都可以配置)总是以波兰语或英语输入数字,那么您可以使用一个函数运行所有输入数字,以将字符串转换为正确的“十进制”类型变量。此外,出于显示目的,您可以通过另一个类似的功能运行它,以确保用户始终看到他们熟悉的数字格式。这里的关键是,一旦从用户那里得到它,就立即将其切换为十进制,并且在发送给用户之前,只在最后一步将其切换回字符串。

@kiwibuster是的,我认为是这样。您是将金额存储在“(n)varchar”字段中,还是使用货币/十进制类型字段?如果是后者,则货币符号和分隔符由您的客户添加,无需替换数据库中的任何内容。

数据实际上不存储为字符串
“£1000.00”
;它以某种数字格式存储

侧栏:通常,数据库设置为使用十进制数据类型(在某些数据库中也称为货币)或浮点数(也称为)存储货币金额

不同之处在于,当存储为十进制时,某些数字(如0.01)会精确表示,而在双精度时,这些数字只能大致存储,从而导致舍入错误

数据库似乎将数字存储为
“£1000.00”
,因为有东西正在格式化它以供显示。在VB6中,有一个函数
FormatCurrency
,它接受像1000这样的数字,并返回像
“£1000.00”
这样的字符串

您会注意到,
FormatCurrency
函数没有指定要使用哪种货币类型的参数。这是因为它与VB中所有其他特定于语言环境的函数一起,根据系统的当前语言环境(从Windows控制面板)计算货币

这意味着在我的系统中

Debug.Print FormatCurrency(1000)
将打印
$1000.00
,但如果我在设置为英国地区的Windows计算机上运行相同的程序,它可能会打印
$1000.00
,这当然是完全不同的

类似地,你也有一些代码,在波兰的某个地方,我看不出,它负责解析用户的字符串并将其转换为数字。如果该代码是Visual Basic中的代码,它同样依赖于控制面板来决定“.”或“.”是否是千位分隔符,以及“.”或“.”是否是小数点

函数
CDbl
将其参数转换为数字。比如我在美国的系统

Debug.Print CDbl("1.200")
生成数字1点2,在控制面板设置为欧洲格式的系统上,它将生成数字1,200

问题可能是有人坐在计算机上,区域控制面板设置为使用“.”作为十进制分隔符,但他们正在键入“.”作为十进制分隔符