带有外语数字字段的MS Access数据库

时间:2012-07-19 16:33:35

标签: ms-access

我有一个MS Access 2007数据库。我在哥伦比亚和厄瓜多尔的一些客户遇到了一个问题(我肯定会更多地出现),他们的编号格式与美国不同。他们使用“。”它们的百万和千位分隔符的小数点(或句点)字符,并使用小数位的“,”逗号字符。这会导致类型不匹配错误,或者我自己的验证会将其作为错误捕获,尽管我只使用IsNumeric()函数来检查字段内容。

我认为MS Access会识别用户Windows设置中设置的区域键盘格式。

任何人都可以为我阐明这一点吗?截至目前,唯一的解决方法是更改​​用户键盘设置以使用“,”为数百万和千位分隔符和“。”。小数点。

任何帮助将不胜感激! : - )

4 个答案:

答案 0 :(得分:1)

一种解决方案可能是在所有相关字段上运行replace(),将逗号转换为句点(如果存在)。

答案 1 :(得分:1)

这应该由本地PC上的区域设置控制。您可以设置小数分隔符和数字分组分隔符,然后Access与1.000,21交互,方式与其他语言环境中的1,000.21相同。

?Format(1000,"currency")
€1.000,00

答案 2 :(得分:0)

好的,这是我发现的:

首先,我为说这是'类型不匹配'而道歉。事实并非如此。这是一个错误#2432:“您输入的表达式包含无效的语法,或者您需要将文本数据括在引号中”。我意识到错误发生在EVAL()函数上,必须在字符串上完成。我首先将数字转换为字符串,对于具有小数和组分隔符的不同区域设置的那些,将“,”视为逗号而不是小数。就我而言,代码是:

If Eval(CStr(cCtl.Value) & ">+" & strMinVal = True Then

所以我使用了 IAmBatman 的建议并在该字段上执行了REPLACE()。由于这只是在现场验证过程中,它不会改变实际数据,如下所示:

If Eval(CStr(Replace(cCtl.Value),",",".")) & ">+" & strMinVal = True Then

Remou ,你一直都是对的。我谦虚的道歉。 : - )

答案 3 :(得分:-1)

这是一个古老的问题,仅询问ms-access,但也许您会遇到与我类似的问题。然后,您也可以考虑以下选项:

  1. 如果您的网页使用Access数据库,则此问题可能与IIS有关。简短地感谢Dmitriy Pavlov的answer

    • 打开IIS 7
    • 选择您的网站
    • 打开.NET全球化
    • 从“文化”选项卡中,选择所需的“文化”和“ UI文化”。
    • 进行iisreset
  2. 此问题可能与Visual Studio设置有关。简而言之,感谢吉姆·米歇尔(Jim Mischel)的answer

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);