使用ADODB从VBA中的记录集中获取小数

使用ADODB从VBA中的记录集中获取小数,vba,excel,ibm-midrange,Vba,Excel,Ibm Midrange,我试图从一个字段中得到一个值,我不知道为什么要四舍五入 rs.Open myQuery, cnn i = 1 Do While rs.EOF = False S1 = rs.Fields("S1") Cells(i, 1) = S1 i = i + 1 rs.Next Loop 例如,在数据库中,S1是8.567,但我总是得到8 有没有办法从该字段定义数据类型 谢谢大家! 正确声明和分配变量 dim S1 as double '<~~declare

我试图从一个字段中得到一个值,我不知道为什么要四舍五入

rs.Open myQuery, cnn
i = 1
Do While rs.EOF = False
    S1 = rs.Fields("S1") 
    Cells(i, 1) = S1
    i = i + 1
    rs.Next
Loop
例如,在数据库中,S1是8.567,但我总是得到8

有没有办法从该字段定义数据类型


谢谢大家!

正确声明和分配变量

dim S1 as double   '<~~declare a double-type variable
rs.Open myQuery, cnn
i = 1
With Worksheet("Sheet1")   'define the parent worksheet
    Do While Not rs.EOF
        S1 = CDbl(rs.Fields("S1").Value)  '<~~ force a double-type return and specify the value
        .Cells(i, 1) = S1    '<~~ the prefix period (.) determines that this belongs to Sheet1
        i = i + 1
        rs.Next
    Loop
end with

dim S1 as double'正确声明和分配变量

dim S1 as double   '<~~declare a double-type variable
rs.Open myQuery, cnn
i = 1
With Worksheet("Sheet1")   'define the parent worksheet
    Do While Not rs.EOF
        S1 = CDbl(rs.Fields("S1").Value)  '<~~ force a double-type return and specify the value
        .Cells(i, 1) = S1    '<~~ the prefix period (.) determines that this belongs to Sheet1
        i = i + 1
        rs.Next
    Loop
end with

dim S1 as double'我找到了解决方案,在您的查询中,您必须定义您想要的数据类型

sqlQuery = "SELECT CAST(F1 AS DOUBLE) AS newValue FROM TABLE"

然后您将得到带小数的新值。

我找到了解决方案,在您的查询中,您必须定义您想要的数据类型

sqlQuery = "SELECT CAST(F1 AS DOUBLE) AS newValue FROM TABLE"

然后,您将得到带小数的新值。

我按您所说的做了,但问题仍然存在。调试程序时,该字段的值没有小数(在将值分配给新变量之前),似乎我无法从实际没有小数的值中获取小数。可能是我的数据库连接出了什么问题?我照你说的做了,但问题仍然存在。调试程序时,该字段的值没有小数(在将值分配给新变量之前),似乎我无法从实际没有小数的值中获取小数。可能是我的数据库连接中的某些内容?记录集的SQL是什么?我回滚了您的编辑。表明你的问题已经解决的正确方式是接受提供解决方案的答案(如果你觉得它值得,也要投票)。我们不把(解决的)(或任何种类的)在标题中。谢谢。记录集的SQL是什么?我回滚了您的编辑。表明你的问题已经解决的正确方式是接受提供解决方案的答案(如果你觉得它值得,也要投票)。我们不把(解决的)(或任何种类的)在标题中。谢谢