好吧,我正在为我的大学课程设计一个数据库。我在查询中的计算字段上苦苦挣扎。计算字段由表达构建器的IIF表达式组成。主要问题是,计算字段有效,但是,由于我在IIF的错误部分中放置了“Not Applicable”,它仍然是#Error?以下是我的IIF!
IIf([Quantity]=20,[Total After Discount]*0.95,
IIf([Quantity]=50,[Total After Discount]*0.925,
IIf([Quantity]=100,[Total After Discount]*0.9,
IIf([Quantity]>=200,[Total After Discount]*0.875,"Not Applicable."))))
有任何帮助/意见或建议吗?
答案 0 :(得分:0)
此查询计算总AFTER折扣。因此,它的输入应该是BEFORE折扣总额。你可能正在做这样的事情:
SELECT IIf([Quantity]=20,[Total After Discount]*0.95,...) AS [Total After Discount]
FROM ...
所以在这个表达式中[Total After Discount]
指的是自己,这是不可能的。将其更改为
SELECT IIf([Quantity]=20,[Total Before Discount]*0.95,...) AS [Total After Discount]
FROM ...
如果[Total After Discount]
是另一个查询或表中的列,并且您希望再次在结果中使用相同的列名,则可以通过按表或查询名称限定列名来执行此操作:
SELECT
IIf([Quantity]=20, MyTable.[Total After Discount]*0.95, ...)
AS [Total After Discount]
FROM MyTable
这消除了不允许的递归。
但你的逻辑是否真的正确?不应该是:
IIf([Quantity]>=200,[Total Before Discount]*0.875,
IIf([Quantity]>=100,[Total Before Discount]*0.9,
IIf([Quantity]>=50,[Total Before Discount]*0.925,
IIf([Quantity]>=20,[Total Before Discount]*0.95,[Total Before Discount]))))
转动逻辑。您没有显示折扣,而是显示折扣后的总金额,因此您应该显示总金额而不是“不适用”。
如果您显示折扣,则显示“不适用”:
IIf([Quantity]>=200,"12.5%",
IIf([Quantity]>=100,"10%",
IIf([Quantity]>=50,"7.5%",
IIf([Quantity]>=20,"5%","Not Applicable")))) As DiscountPercent
答案 1 :(得分:0)
我认为您不能在计算字段中混合数字/文本答案。在这种情况下,您最好使用查询而不是计算字段。到目前为止,我已经避免使用计算字段来限制它们(比如这个)。