【问题标题】:Access Database - Nested If statementsAccess 数据库 - 嵌套 If 语句
【发布时间】:2018-07-03 01:14:29
【问题描述】:

我目前正在尝试在 access database 中创建一个 nested if statement 字段,该字段根据它必须满足的标准填充数据。

到目前为止,这是我在表达式生成器中的内容:

IIf([JDE Aging Report].[Term]="PPL" And [JDE Aging Report].[OpenAmount]>0,"PPL Sale", 
IIf([JDE Aging Report].[Term]="PPL" And [JDE Aging Report].[OpenAmount]<0,"PPL Credit", 
IIf([JDE Aging Report].[Term]="AE" Or "DSC" Or "MC" Or "VSA" And [JDE Aging Report].[OpenAmount]<0,"CC Credit",
 **IIf([JDE Aging Report].[Term]="AE" Or "DSC" Or "MC" Or "VSA" And [JDE Aging Report].[OpenAmount]>1,"CC Sale"))))**

由于某种原因,它没有选择表达式中的最后一个参数(粗体),因此正在更新的数据不正确。

谁能告诉我我做错了什么?在 access database 中构建 nested if statements 是否有限制?

非常感谢!

【问题讨论】:

  • 虽然@sergeys 提供了一个很好的答案,但您也可以考虑使用自定义函数来满足您的要求。对于小型数据集来说,它的命中或未命中会更快,但自定义函数比直接 SQL 慢。只需传入所有值并返回所需的结果。我发现这种方法更容易让我理解我在做什么。

标签: database ms-access if-statement nested expressionbuilder


【解决方案1】:

最后一个 Iif 应该是

IIf(([JDE Aging Report].[Term]="AE" Or 
[JDE Aging Report].[Term]="DSC" Or 
[JDE Aging Report].[Term]="MC" Or 
[JDE Aging Report].[Term]="VSA") And 
[JDE Aging Report].[OpenAmount]>1,"CC Sale")

IIf([JDE Aging Report].[Term] In ("AE", "DSC", "MC", "VSA") And 
[JDE Aging Report].[OpenAmount]>1,"CC Sale")

应该对之前的 Iif 进行类似的更改。

还要确保条件中使用的字段不为空,否则结果可能不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多