vba - 数据类型 Number-Decimal

标签 vba ms-access

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

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

    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. 我将表的数据类型更改为 Number - Integer、Long、Single 和 Double,在所有这些情况下,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

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

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

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

有什么建议吗?

谢谢

最佳答案

您最近遇到了一个错误:

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

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

关于vba - 数据类型 Number-Decimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62344861/

相关文章:

json - 将 JSON 文件导入 MS Access 表

python - 使用 Python 的 `Nothing` 传递变量 `win32com`

excel - 如何使用 VBA 自动扩展图表的范围?

wcf - Excel-VBA REST WCF 在第一次调用时工作,但后续调用返回缓存的(非当前)数据

php - UTF-8 令人头痛的 mySQL/PHP Access

excel - 如何将 Excel 工作表名称传递给 Access 子例程?

vba - 非 volatile UDF总是重新计算

vba - 在 PrintOptions 下添加范围并在变量中确定它

java - 64 位 Windows 中与 Access 数据库的 ODBC 连接

ms-access - 列表框多值选择