我正尝试如下更新库存库存:
[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
如上所述,我的目标是从“库存库存”值中扣除订购的数量(无论是小数还是整数)。
有人可以帮我吗?
答案 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