我有一个MS Access 2007数据库。我在哥伦比亚和厄瓜多尔的一些客户遇到了一个问题(我肯定会更多地出现),他们的编号格式与美国不同。他们使用“。”它们的百万和千位分隔符的小数点(或句点)字符,并使用小数位的“,”逗号字符。这会导致类型不匹配错误,或者我自己的验证会将其作为错误捕获,尽管我只使用IsNumeric()函数来检查字段内容。
我认为MS Access会识别用户Windows设置中设置的区域键盘格式。
任何人都可以为我阐明这一点吗?截至目前,唯一的解决方法是更改用户键盘设置以使用“,”为数百万和千位分隔符和“。”。小数点。
任何帮助将不胜感激! : - )
答案 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,但也许您会遇到与我类似的问题。然后,您也可以考虑以下选项:
如果您的网页使用Access数据库,则此问题可能与IIS有关。简短地感谢Dmitriy Pavlov的answer:
此问题可能与Visual Studio设置有关。简而言之,感谢吉姆·米歇尔(Jim Mischel)的answer:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);