【问题标题】:Access-Calculated Field- Nested IIF访问计算字段嵌套 IIF
【发布时间】:2021-11-26 17:31:48
【问题描述】:

我是新手,我需要帮助了解我做错了什么。我在表格中有一个计算字段,我输入的表达式粘贴在下面我得到一个无效的语法:-

IIf([JPP-JPA_Received_Date]<=[JPP-JPA_Due_Date],"On Time", IIf([JPP-JPA_Received_Date]>[JPP-JPA_Due_Date],"Late", IIf([JPP-JPA_Received_Date],Is Null, AND IIF([JPP-JPA_Due_Date]<Date(),"Over Due"))))

【问题讨论】:

  • 避免计算表字段。为此使用选择查询。

标签: ms-access calculated-field iif-function


【解决方案1】:

有几件事有点不对劲。

您检查 [JPP-JPA_Received_Date] 是否为 null 并且 [Jpp-JPA_Due Date] 早于今天的部分应全部包含在单个 Iif 函数的条件部分中。

您可能还需要将[JPP-JPA_Received_Date] 的每个实例包装在Nz() 函数中。这是因为如果它为 null,Access 可能会在 Null

最后,我推荐SWITCH 函数。它的作用类似于嵌套 if 语句,但更容易理解。

【讨论】:

  • Bryan Rock 的出色回答。一对夫妇在它上面。 SQL 中的 Nz() 函数总是返回一个字符串数据类型:在将它包含在其他表达式中时要小心,尤其是在 UNION 中。 Switch() 函数比嵌套的 Iif() 函数更具可读性。但是, Switch() 会评估其所有参数表达式,即使是那些不会被返回的,而 Iif() 不会:当您认为 Switch() 不会评估的表达式时,这可能会导致崩溃实际评估。
  • 感谢您的回复,但是我已经通过查询尝试了 SWITCH 功能,它起作用了如果迟到或准时,使用 switch 的查询会为每个成员响应的每个项目生成报告。我将表中的表达式添加为计算字段,这样我就可以计算每个成员 A、B、C 的结果有多少迟到和准时响应,然后获得整体指标的平均值。
  • 对于我上面提到的指标,我尝试了对它起作用的查询的计数在查询中我添加了 Member-Total Group By JPP_JPA_Response_Status: Switch([JPP-JPA_Received_Date][JPP-JPA_Due_Date],"Late",[JPP-JPA_Received_Date] 为空并且 [JPP-JPA_Due_Date]
  • JPP_JPA_Response_Status 计数:Count(Switch([JPP-JPA_Received_Date][JPP-JPA_Due_Date],"Late",[ JPP-JPA_Received_Date] 为空且 [JPP-JPA_Due_Date]
猜你喜欢
  • 2015-02-07
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多