ms-access - Access SQL 中的 CDec 的行为与从 Access VBA 使用时不同

标签 ms-access vba

根据 MSDN,在 VBA 中将数字转换为十进制的语法是

CDec(expression)

我也经常在access SQL中使用转换函数。例如 Clng、Cint 等...

但是,当我使用 CDec 时,有时会出现此错误

Compile error:Wrong number of arguments or invalid property assignment

考虑:

在立即窗口中

? cdec(round(0.00023,4))
0.0002 

? CDec(Round(0.12345678+0.00000001,6))
0.123457 

? CDec(Round(0.12345679,6))
0.123457 

? CDec(Round(0.12345679,6),10)
This gives the above error  (ie as expected as no parameter is allowed)

在 SQL 查询列中

CDec(Round(0.12345678,6))
This gives the above error.

CDec(Round(0.12345678,6),2)
This WORKS and give the answer 0.     What does the parameter do!?

CDec(Round(0.12345678,6),2,1)
This gives the above error.

我猜当从 Access SQL 调用函数时,它使用的代码与 VBA 使用的代码不同。但是,我被困住了,不明白。

救命!

我使用的是 MS Access 2013:内部版本:15.0.4727.1003 32 位

哈维

最佳答案

MS 的 Dennis Wilmar 表示,这是 Access 2003 中已确认的错误 - 无法删除:

Error message when you use the CDec() function in an Access query

建议的解决方法是将 CDec 包装在自定义函数中:

Function NewCDec(MyVal)
   NewCDec = CDec(MyVal)
End Function

关于ms-access - Access SQL 中的 CDec 的行为与从 Access VBA 使用时不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31327402/

相关文章:

database - 将数据库表中的列名放入列表中

excel - 灾难性故障 EXCEL VBA - 错误 '-2147418113 (8000ffff)'

arrays - 将工作表范围分配给数组

vba - Excel - VBA 宏运行后单元格被锁定

sql - 按月聚合 SQL 查询分组

ms-access - MS Access : Why is ADODB. Recordset.BatchUpdate 比 Application.ImportXML 慢这么多?

sql - MS Access 中 TRUE < FALSE?

node.js - 在带有 Node.js 的 Linux 服务器上使用 Microsoft Access 数据库 .accdb

vba - 是否有任何相当于 vba 中的 readline 的命令?

vba - 从 VBA 运行第 3 方 Excel 插件