如何在vba访问中计算十进制值?

时间:2019-04-06 10:09:45

标签: ms-access access-vba

我正尝试如下更新库存库存:

[InventoryStock] = ([CurrentInventoryStock]-[QuantityOrdered])

请注意,QuantityOrdered可以是十进制,例如:5.2,也可以是整数,例如8。

  • InventoryStock列设置为数字(双精度)
  • QuantityOrdered列也设置为数字(双精度)

QuantityOrdered是5的整数时,它可以完美工作;但是当QuantityOrdered是一个十进制数字(例如7.5)时,我收到:

  

运行时错误3144(更新语句中的语法错误)

...突出显示了我在VBA中编写的更新代码。

If Not IsNull(Me.QuantityOrdered) Then
    CurrentDb.Execute " UPDATE Inventory SET InventoryStock = InventoryStock - " & Nz(Me.QuantityOrdered.Value, 0) & ""
End If

如上所述,我的目标是从“库存库存”值中扣除订购的数量(无论是小数还是整数)。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

关于您的问题:

使用隐式字符串转换将在国家(地区)/语言设置之后使用小数点分隔符,例如(,),这会引起问题。

因此,您应该明确地使用Str()将数字值转换为字符串以获取点(.)作为分隔符。

另外两句话:

  • NZ(…)是不必要的,因为您已经在(If Not IsNull(Me.QuantityOrdered) Then)之前进行过检查。
  • 也不需要仅添加一个空字符串(& "")。
If Not IsNull(Me.QuantityOrdered) Then
    CurrentDb.Execute "UPDATE Inventory SET InventoryStock = InventoryStock - " & Str(Me.QuantityOrdered.Value)
End If