我的一个表有一个名为Cost
的字段和一个名为Extra Cost
的字段。为了得到Total Cost
,我将它们与以下字段一起添加,它可以正常工作:
Total Cost: (Val(nz([Cost],"")))/100 + (Val(nz([Extra Cost],"")))/100
(我除以100,因为Cost
和Extra Cost
的存储没有小数点)
现在,记录可能会Cost
= 0,Extra Cost
> 0.但如果Cost
= 0,我希望Total Cost
也= 0.我想出了以下内容,但如果#Error
= 0,则会产生Cost
。如果Cost
>正常工作0:
Total Cost: IIf([Cost]>0,((Val(nz([Cost],"")))/100+(Val(nz([Extra Cost],""))))/100,0)
基本上我在寻找:
If Cost = 0, Then Total Cost = 0
Else
If Cost > 0, Then Total Cost = Cost + Extra Cost
“真实”部分有什么问题?
以下是一些数据示例:
Cost Extra Cost
100 2.5
250 1.5
150 2.5
null 2.75
答案 0 :(得分:1)
根据您的描述,我认为您可以在添加2个值之后除以100,而不是在添加它们之前将每个值除以100。这不应该影响逻辑,但应该给你一个更简单的IIf
表达式......这有望更容易诊断。
IIf
(
Val(Nz([Cost], "0")) > 0,
(Val([Cost]) + Val(Nz([Extra Cost], "0"))) / 100,
0
)
在Access 2007中使用示例数据,我从以下查询中获取此结果集:
Cost Extra Cost Total Cost
100 2.5 1.025
250 1.5 2.515
150 2.5 1.525
2.75 0
SELECT
y.Cost,
y.[Extra Cost],
IIf
(
Val(Nz([Cost], "0")) > 0,
(Val([Cost]) + Val(Nz([Extra Cost], "0"))) / 100,
0
) AS [Total Cost]
FROM YourTable AS y;
如果问题是[Total Cost]
需要文本值,您可以使用CStr()
将IIf
数值转换为字符串。
CStr(
IIf
(
Val(Nz([Cost], "0")) > 0,
(Val([Cost]) + Val(Nz([Extra Cost], "0"))) / 100,
0
)
)