如何在MS Access中构建带账号条件的材料成本计算表达式?
MS Access 材料成本加价表达式修正方案
正确表达式
直接替换原有公式为以下内容,即可满足你的需求:
Material Cost: IIf([MATERIAL_TYPE] In ("S","M") Or ([MATERIAL_TYPE]="T" And [ACCT] In ("5","6","7")), [MATERIAL_COST]*1.42, [MATERIAL_COST])
错误原因分析
你之前尝试的表达式存在两个核心语法问题:
- 误用
where关键字:where是SQL查询语句的筛选语法,不能在IIf函数的条件判断中使用,多条件组合必须用And/Or这类逻辑运算符。 - 账号判断格式错误:判断账号为5、6、7时,要么用
[ACCT]="5" Or [ACCT]="6" Or [ACCT]="7",要么用更简洁的[ACCT] In ("5","6","7"),不能直接写成[ACCT = "5" "6" "7"]。
示例数据验证
对照你给出的示例数据,表达式逻辑完全匹配预期:
- Product 1(S,4):满足
MATERIAL_TYPE In ("S","M"),应用加价 - Product 2(S,5):满足
MATERIAL_TYPE In ("S","M"),应用加价 - Product 3(M,2):满足
MATERIAL_TYPE In ("S","M"),应用加价 - Product 4(M,6):满足
MATERIAL_TYPE In ("S","M"),应用加价 - Product 5(T,6):满足
MATERIAL_TYPE="T" And ACCT In ("5","6","7"),应用加价 - Product 6(T,9):不满足任一加价条件,不应用加价
- Product 7(T,1):不满足任一加价条件,不应用加价
内容的提问来源于stack exchange,提问作者Grant
相关产品推荐
相关产品推荐

