【问题标题】:In Access, is the "falsepart" of the IIf Function required?在 Access 中,是否需要 IIf 函数的“错误部分”?
【发布时间】:2022-01-15 11:28:01
【问题描述】:

在将一些 Access 查询转换为 T-SQL 时,我遇到了 Access 函数 IIf。我阅读了文档here 并了解它需要 3 个参数:表达式、if true 和 if false。我还没有找到是否需要“假”参数?如果没有提供 false,那是什么行为?

更新: 当被问到这个问题时,我不知道查询是否仅使用 2 个参数(b/c 我无法在 Access 中运行查询)。但是,我确实做到了,怀疑它可能会起作用(只有 2 个参数)b/ca 我正在转换(到 T-SQL)的几个查询嵌套了 IIF 和最后一个 IIF只有 2 个参数。

【问题讨论】:

  • 它是IIf,并且您链接的文档明确指出所有3个参数都是必需的。
  • 安德烈,是的,你是对的,(我知道)文档明确指出所有 3 个都是必需的。我的困惑来自于我被分配要转换的查询——其中一些已经嵌套了 IIF,其中最终的 IFF 只有两个参数。通常我会运行查询并查看会发生什么,但由于多种原因,我无法运行查询。所以我想我的主要动机是首先确定编写查询的人的意图是什么,并确定如果 IIF 仅给出 2 个参数会发生什么(在 Access 中)。
  • 啊,我明白了。我不知道。如果您将此信息(该函数实际上在仅具有 2 个参数的查询中工作)添加到您的问题中,这将非常有用。

标签: ms-access required


【解决方案1】:

这是IIf,而不是IFF。 VBA 和文本框表达式中需要所有参数,并且两者都必须是可计算的(没有错误结果,例如 DivBy0),因为这两个部分都将被计算 - 如果任何一个错误,整个表达式都会出错。 Access 查询中的 IIf() 工作方式不同 - 'falsepart' 仅在 'truepart' 失败时计算,如果未提供 'falsepart',则表达式在 'truepart' 失败时返回 Null。

尝试一些表达式,看看会发生什么。一个用于测试:IIf(1=2,"T")

【讨论】:

  • June7, 1) 你的答案部分“查询中的 IIf() 工作方式不同”是我正在寻找的。 2) 我在 T-SQL 中尝试了 IIF,如果没有给出第三个参数,则“SELECT IIf(1=2,'T')”错误“语法不正确”,但是 3) 我在 Access 中尝试并运行查询“ SELECT IIf(1=2,"T")" 显示一个空单元格。我可以假设“空单元格”就是“如果 'truepart' 失败则返回 Null”的意思吗?
  • 是的,结果是 Null 而不是空字符串。
【解决方案2】:

June7 优秀答案的附录:

以下是在 Access SQL 中工作的两个简单查询:

SELECT IIf(1=1, "yes")

(返回“是”)

SELECT IsNull(IIf(1=2, "yes"))

(返回 -1 aka True) - 因此,如果您省略 falsepart,如果 expr 的计算结果不为 True,IIf() 确实返回 NULL。

【讨论】:

  • 安德烈,很棒的附录,并且非常清楚地消除了歧义。谢谢!
【解决方案3】:

是的,它是必需的,它实际上就像一个 if else 语句。

即,如果条件满足,就会发生一个动作,如果条件不满足,就会发生另一个动作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多