Passthrough 不再 return 十进制值

Passthrough does not return decimal values anymore

希望我没有问一个已经存在的问题。经过几个小时的搜索,没有在互联网上找到解决方案。 我认为这个问题很新,可能是最近更新引起的。

在我的 MS Access VBA 代码中,我使用直通查询从我的 MS SQL 服务器上的 SP 获取结果。 几个星期以来,我不再收到十进制值作为结果,在这种情况下,这些值只是 null

这是一个非常简单的代码示例:

Dim db As DAO.Database
Set db = CurrentDb
Dim qdf As DAO.QueryDef
Dim rs As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT 'abcde' AS string, '2020-07-01' AS date, 123.45 AS decimal, 3 as int"

Set qdf = db.CreateQueryDef("")
qdf.Connect = [here is my connectiong string]
qdf.SQL = strSQL
qdf.ReturnsRecords = True
Set rs = qdf.OpenRecordset

使用该结果时,例如通过将其复制到 Excel 文件中,字符串;日期和整数值按要求写入。只有十进制值是 null

希望我没有错过这里的任何重要信息。如果您有任何问题,请告诉我。

提前感谢您的帮助!

BR, 马丁

您似乎正在尝试 cast/type 您的价值观。您实际上是在创建计算字段。

用散列包围您的日期字符串表示这些值是日期:

#2020-07-01#

使用适当的 C 函数转换所有数值:

Cdbl(123.45)
CInt(3)

您的代码似乎可以正常工作,现在却不能,这可能是您最近在 Microsoft Access 中遇到了一个错误:Access VBA/DAO code may crash or report incorrect data for Decimal columns,现在显然已修复。

此致,