【问题标题】:Data type Number-Decimal数据类型 Number-Decimal
【发布时间】:2020-10-06 15:01:28
【问题描述】:

直到几天前一切正常,然后我遇到了这个问题。 我为 Microsoft 365 中的 Access vba 编写了一些代码,这些代码在一些本地和连接的表上运行 SQL 查询。 此连接表之一的字段设置为数据类型 Number - Decimal。正如我提到的,几天前这个字段开始返回空字符串。这是我尝试调查问题的几个步骤。

  1. 我制作了已连接表的本地副本,以确保问题不是来自外部。没有区别
  2. 我创建了一个简单的查询访问 - SELECT * FROM [NameTable] 并且所有数据都在那里
  3. 我在 vba 中运行相同的查询,有问题的字段返回一个空字符串
  4. 我在 vba 中运行访问查询

    Set qdfNew = dbs.QueryDefs("Pippo")
    Set RS = qdfNew.OpenRecordset
        If Not (RS.EOF And RS.BOF) Then
            RS.MoveLast
            RS.MoveFirst
            For iCurRec = 0 To RS.RecordCount - 1
                Debug.Print RS.Fields("HSL_QUANTITA").Value
                RS.MoveNext
            Next iCurRec
        End If
    RS.Close
    

它返回一个空字符串 5. 我将表格的数据类型更改为数字 - 整数、长整数、单精度和双精度,在所有这些情况下,vba 中的查询都返回正确的值 6.我这样修改代码

    Set qdfNew = dbs.QueryDefs("Pippo")
    Set RS = qdfNew.OpenRecordset
        If Not (RS.EOF And RS.BOF) Then
            RS.MoveLast
            RS.MoveFirst
            For iCurRec = 0 To RS.RecordCount - 1
                Debug.Print TypeName(RS.Fields("HSL_QUANTITA").Value)
                RS.MoveNext
            Next iCurRec
        End If
    RS.Close

更改数据类型时,代码会在即时窗口中返回: 字符串 -> 数字十进制 单 -> 数字-单精度 双精度 -> 数字双精度 整数 -> 数字整数 Long -> Number-Long

看起来从几天前 vba 就不能再将小数转换为字符串了

我不拥有已连接的表,因此我无法更改数据类型。 我尝试将问题报告给 Office 帮助台,但由于与 vba 相关,他们无法解决问题。

有什么建议吗?

谢谢

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    你最近遇到了一个错误:

    Access VBA/DAO code may crash or report incorrect data for Decimal columns

    请注意包含的临时解决方法的链接。

    【讨论】:

    • 感谢您提请我们注意,Gustav。我昨天被这个错误击中(不记得 DECIMAL 被我的应用程序中的外部导入函数使用),并且在不知道它的情况下调试它会困难得多。 :)
    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2012-08-24
    相关资源
    最近更新 更多