[英]Access updating field to NULL value on error condition of IIF(IsError())
我正在尝试使用以下查询更新 MS Access 中的表:
UPDATE [Stock Detail Item]
SET [Stock Detail Item].Total_Payments =
IIF(
IsError(DSum("Payment_Amount", "Principal Payments", "Stock_No='" & [Stock Detail Item].Stock_No & "'")),
CCur(0),
DSum("Payment_Amount", "Principal Payments", "Stock_No='" & [Stock Detail Item].Stock_No & "'")
);
当Principal Payments
表中有Stock_No
的付款时,查询正确地将总付款金额插入到表中。
但是当Principal Payments
表中没有付款时, IsError
function 应该返回True
,这意味着IIF
应该返回0
转换为货币。
问题是,查询在这些实例中插入NULL
。 这会导致稍后尝试对NULL
值执行数学运算时出错。
我已经尝试过,无论是否将0
或0.00
转换为货币数据类型,都没有运气。
知道为什么在不存在错误时返回正确值,而在出现错误时返回NULL
值吗?
你state:
但是当 Principal Payments 表中没有付款时,
IsError
function 应该返回True
。
但是,根据文档,当没有记录与给定条件匹配或域(表/查询)不包含记录时, DSum
function 将返回Null ,而不是错误:
如果没有记录满足条件参数或域不包含记录,则
DSum
function 返回Null 。
因此,我建议将您的代码更改为以下内容:
update [Stock Detail Item]
set [Stock Detail Item].Total_Payments =
Nz(DSum("Payment_Amount", "Principal Payments", "Stock_No='" & [Stock Detail Item].Stock_No & "'"),0)
此语句使用Nz
function,如果第一个参数是Null
,它将返回第二个提供的参数(在上面的代码中为0
),否则返回第一个参数( DSum
的结果)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.