【问题标题】:Get decimals from Recordset in VBA with ADODB使用 ADODB 从 VBA 中的 Recordset 获取小数
【发布时间】:2016-04-01 06:47:00
【问题描述】:

我正在尝试从一个字段中获取一个值,我不知道为什么要四舍五入

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

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

谢谢!

【问题讨论】:

  • 记录集的 SQL 是什么?
  • 我回滚了您的编辑。显示您的问题已已解决的正确方法是接受提供解决方案的答案(如果您认为它应得的,也可以投票)。我们不会在此处的标题中加入 (Solved)(或任何其他形式)。谢谢。

标签: vba excel ibm-midrange


【解决方案1】:

正确声明和分配变量。

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

我也不喜欢孤儿Cells(i, 1)。那应该有一个定义的父工作表。也许可以使用包装 With ... End With statement 来指定亲子关系。

【讨论】:

  • 我按照你说的做了,但问题仍然存在。调试程序,该字段的值没有小数(在将值分配给新变量之前),似乎我无法从实际上没有小数的值中获取小数。可能来自我的数据库连接?
【解决方案2】:

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

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

然后你会得到带小数的newValue。

【讨论】:

    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多