【问题标题】:Calculated Field (IIF)计算字段 (IIF)
【发布时间】:2015-02-07 15:55:42
【问题描述】:

好的,我目前正在为我的大学课程设计一个数据库。我在查询中的计算字段上苦苦挣扎。计算字段由通过表达式生成器的 IIF 表达式组成。主要问题是,计算字段有效,但是,由于我在 IIF 的错误部分中输入了“不适用”,它仍然出现 #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."))))

有什么帮助/想法或建议吗?

【问题讨论】:

    标签: ms-access calculated-field iif


    【解决方案1】:

    此查询计算总折扣后。因此,它的输入应该是折扣前的总和。你可能正在做这样的事情:

    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
    

    【讨论】:

    • 啊!好的,我刚刚使用了你的最后一个表达方式,只是显示了折扣,它有效!但是,我将如何使它成倍增加?你真的不能用“不适用”来复数一个字段吗?
    • 顺便说一句,该公司打算以折扣价从出版商那里购买书籍,因此为什么我在打折后总价。但是,我被要求根据订单大小在顶部添加折扣。希望这有助于您了解我的数据库
    • 好吧,我用了你的逻辑,加了两个字段,一个显示折扣,一个显示折扣后的总和!你我的朋友,是一个传奇!
    • 如果您必须进行乘法运算,请将其放在 IIF 中:就像 IIf([Quantity]>=200,Quantity*Price*0.875, ...) 而不是在 IIF 之前或之后:Quantity*IIf([Quantity]>=200,Price*0.875, ...),因此您永远不会与文本相乘。
    【解决方案2】:

    我认为您不能在计算字段中混合使用数字/文本答案。在这种情况下,最好使用查询而不是计算字段。到目前为止,我一直避免使用计算字段来限制它们(例如这个)。

    【讨论】:

    • 嗨,是的,我正在使用查询,但是,我需要计算与订单大小相关的折扣...例如,如果订单是 20,那么我需要 5% 的折扣等。 . 那么最好的方法是什么?
    猜你喜欢
    • 2021-05-08
    • 2021-11-26
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    相关资源
    最近更新 更多