【问题标题】:ADODB decimal in VB6 / VB.NETVB6 / VB.NET 中的 ADODB 十进制
【发布时间】:2012-09-25 15:52:30
【问题描述】:

我有一个使用 ADODB (MDAC 2.8) 的数据访问组件,它使用 ADODB.recordset 来读取包含定义为 decimal(15,2) 的列的 sql server 表。

这个数据访问组件是用 VB6 编写的,多年来一直在我们的软件中使用。

现在我们必须编写一个不使用 VB6 的兼容组件(因此我们在 VB.NET 中进行了重写)。

为了更轻松地转移到新组件,我们坚持使用 VB.NET 中的 ADODB。

现在的问题是: 如果我从包含“50000”(无小数)数据的列中读取一个值并将其作为字符串返回,则 vb6 组件提供“50000”,而 VBNET 版本提供“50000,00”。

所以这可能只是一个外观问题,因为内部表示是可以的,但我想知道是否有一个开关来确定如何返回小数。

此外:欢迎在此范围内引用此兼容性问题的任何链接...

问候 克劳斯

【问题讨论】:

  • 这不是 VB.Net 问题而不是 VB6 问题吗?我正在将 VB.Net 添加到标签中
  • 如果您使用 ToString 方法,您可以在 VB.Net 中显式控制字符串格式。看看过载情况。您可以传递格式字符串来控制显示多少小数位(如果有),您可以传递 CultureInfo 对象,这些对象允许您选择小数点分隔符是点还是逗号
  • 请告诉我你把十进制读成十进制而不是字符串。
  • 托尼,为了计算,我们填充十进制变量,但我的问题是关于演示的。考虑到我们有大量的资源依赖于此
  • MarkJ 我知道有这种格式化选项 - 但我们有一个非常大的代码库,它按原样使用组件 - 没有机会查看每个参考......

标签: vb.net vb6 decimal adodb


【解决方案1】:

我在这里看到两个大错误:

为了更轻松地转移到新组件,我们坚持使用 VB.NET 中的 ADODB。

这没有充分的理由。使用 ADO.Net API 而不是旧的 ADODB,您将很快(而不是稍后)感谢自己。

如果我从包含“50000”(无小数)数据的列中读取一个值并将其作为字符串返回

呃。将数值数据保留为数值数据。在您的代码中使用 Decimal 类型,直到您实际向用户显示数据之前的最后一刻。

【讨论】:

  • 乔尔,在一个理想的世界里,我会同意,但就预算和人员而言,这远非如此。所以问题仍然存在:有没有办法让 ADODB 以同样的方式工作,无论我从哪里调用它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多