直到几天前一切正常,然后我遇到了这个问题。 我在 Microsoft 365 中为 Access vba 编写了一些代码,这些代码在一些本地和连接的表上运行 SQL 查询。 其中一个连接表的字段设置为数据类型 Number - Decimal。正如我提到的,几天前这个字段开始返回空字符串。这是我尝试调查问题的几个步骤。
- 我制作了连接表的本地副本,以确保问题不是来自外部。没有区别
- 我创建了一个简单的查询 Access - SELECT * FROM [NameTable] 并且所有数据都在那里
- 我在 vba 中运行相同的查询,并且相关字段返回一个空字符串
我在 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/