2008-08-21 81 views
2

我正在为在两个位置使用的客户端维护一个应用程序。一个在英格兰,一个在波兰。本地货币字符串转换

数据库存储在英格兰和使用的格式为货币1000.00£,但信息被波兰当地聚集在那里1000,00是格式。

我的问题是,在VB6是那里需要一个货币字符串在本地格式转换为另一种,或者我就只能解析字符串和替换,或功能。 ?

BTW我已经看过CCur函数,但不能肯定是否会做我想做的。

回答

7

的数据实际上不存储为串"£1000.00";它以某种数字格式存储。

侧栏:一般数据库设置使用任一十进制数据类型来存储货币量(也称为在一些DBS),或作为一个浮点数(也称为 )。

不同的是,当它存储为十进制某些号码等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")

生产的数量一分二,系统与控制面板设置为欧洲格式,它会产生多少千,二百。

问题可能是您的某个人坐在计算机上的区域控制面板设置为“。”。作为小数点分隔符,但他们正在输入“,”作为小数点分隔符。

0

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

只要你总是从一种格式转换为另一种,你不需要做任何分析,只需更换“”用“,”或其他方式。如果存储在字符串中,您可能还需要删除“£”字样。

0

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

0

@KiwiBastard是的,我会这么认为。你在“(n)varchar”字段中存储数量还是使用货币/小数类型字段?如果后者是这种情况,货币符号和分隔符就会被客户端添加,并且不需要替换数据库中的任何内容。