2

我的一张表有一个名为的字段Cost和一个名为Extra Cost. 为了提出Total Cost,我将它们与以下字段一起添加,效果很好:

Total Cost: (Val(nz([Cost],"")))/100 + (Val(nz([Extra Cost],"")))/100

(我除以 100 因为CostExtra Cost存储时没有小数点)

现在有可能一条记录有Cost= 0,并且Extra Cost> 0。但是如果Cost= 0,我Total Cost也想= 0。我想出了以下内容,但结果是#Errorif Cost= 0。如果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
4

1 回答 1

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
        )
    )
于 2013-09-30T15:33:44.027 回答