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

时间:2015-07-09 20:17:35

标签: ms-access access-vba

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

CDec(expression)

我经常在访问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.

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

帮助!

我正在使用MS Access 2013:Build:15.0.4727.1003 32bit

哈维

1 个答案:

答案 0 :(得分:3)

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