【发布时间】:2015-01-12 11:52:23
【问题描述】:
我在尝试将十进制值保存在我的 Access 数据库中的表中时遇到了一些问题。
如果我键入这些值,没有问题,但是当我尝试使用我的程序保存它们时,数据库不会保存小数并删除,(8,7 变成 87)。
表格中的字段是小数、小数位数 2、精度 8 和小数位数 2。
我正在使用此代码插入数据:
Dim price as Decimal
ProductsTableAdapter.Insert(id,name,price)
我也尝试将价格设置为double,但我仍然遇到同样的问题。
我查看了很多地方并阅读了有关将 Access DB 上的数据类型更改为 Double 的信息,但没有成功。
任何想法都将不胜感激!
编辑:
正如cybermonkey 所说,Decimal 的值是8,7,所以我尝试以这种方式进行更改。
我更改了代码以将, 替换为.:
Dim price2 As String
price2 = price.ToString.Replace(",", ".")
ProductTableAdapter.Insert(id, name, price2)
价格 2 是 8.7,但数据库再次显示 87,00
编辑 2:
我试图用不同的数据库创建另一个项目来确定问题是否是这个特定的适配器,但我又遇到了同样的问题。
之后,我调试程序以查看十进制值是如何存储的,并且是:8,7 而不是8.7。然后我尝试在数据库上插入数据,如果你输入8.7或8,7,它与这两个值一起工作正常,所以现在我不知道为什么这不起作用。
【问题讨论】:
-
问题似乎是您的本地化,
Decimal值有句号(通常),但您使用的是逗号。您的本地化(系统语言)是什么? -
我尝试在 DB 和 VB 程序上同时使用 Decimal 和 Double。
-
问题在于 .NET 处理本地化的方式,请参阅我的答案以获取更多信息和示例代码(示例代码适用于 SQL,但您应该能够转换为读取 Access 数据库)。
-
我一直在研究这个问题,我发现它令人困惑。我将研究它,然后在找到解决方案时更新我的答案。
-
硬编码它以更改逗号和点不是如何转换十进制值。您需要回答第一个问题:您的系统文化设置是什么?数据是相同格式还是来自不同文化?