VB6/VB.NET中的ADODB十进制

VB6/VB.NET中的ADODB十进制,vb.net,vb6,decimal,adodb,Vb.net,Vb6,Decimal,Adodb,我有一个使用ADODB(MDAC 2.8)的数据访问组件,它使用ADODB.recordset来读取sql server表,该表包含定义为decimal(15,2)的列 这个数据访问组件是用VB6编写的,在我们的软件中使用了多年 现在我们必须编写一个没有VB6的兼容组件(因此我们在VB.NET中进行了重写) 为了更容易地转换到新组件,我们坚持使用VB.NET中的ADODB 现在的问题是: 如果我从包含“50000”(无小数)数据的列中读取一个值并将其作为字符串返回,vb6组件将提供“50000”

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

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

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

为了更容易地转换到新组件,我们坚持使用VB.NET中的ADODB

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

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

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

问候
克劳斯

我在这里看到两大错误:

为了更容易地转换到新组件,我们坚持使用VB.NET中的ADODB

这没有什么好的理由。使用ADO.NETAPI而不是旧的ADODB,您会很快(而不是很晚)感谢自己

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


啊。将数字数据保留为数字数据。在整个代码中使用十进制类型,直到向用户实际显示数据之前的最后一刻。

这不是一个VB.Net问题,而是一个VB6问题吗?我正在将VB.Net添加到标记中。如果使用ToString方法,您可以显式控制VB.Net中的字符串格式。看看重载。您可以传递一个格式字符串来控制显示的小数位数(如果有),还可以传递CultureInfo对象,这些对象允许您选择小数分隔符是点还是逗号。请告诉我您将小数读入小数而不是字符串。Tony,为了计算,我们填充小数变量,但我的问题是演讲。考虑到我们有大量依赖thisMarkJ的源代码,我知道有这种格式化选项,但是我们有一个非常大的代码库,它使用组件,没有机会查看每个引用…Joel,在一个理想的世界中,我会同意,但是关于预算和人员,这离这还很远。所以问题依然存在:有没有一种方法可以让ADODB以同样的方式工作,不管我从哪里称呼它?