IIF 关于标准的声明

Posted

技术标签:

【中文标题】IIF 关于标准的声明【英文标题】:IIF statement on a criteria 【发布时间】:2019-07-11 06:16:56 【问题描述】:

我有一个查询,其中包含名为“FirstName”、“Condition”、“Status”的字段。 Condition 字段可以是“Working”或“Under Maintenance”或“Damaged”,对于 Status,它是“Available”或“Unavailable”或“Assigned”。

如果条件设置为“维护中”,则状态应切换为“不可用”。如果条件设置为“损坏”,情况也是如此。但是,如果填充了 FirstName,则 Condition 必须切换到“Working”,并且 Status 也应该设置为“Assigned”

下面的代码只是我的猜测,我知道它不会起作用。

Status: IIf(IsNull([FirstName],"Available","Unavailable","Assigned" and [Condition]=Damaged),"Unavailable","Available")

【问题讨论】:

如何将 Condition 设置为“维护中”或“损坏”?这 3 个字段是否在表中并通过表单填充了用户输入?听起来您确实需要使用 VBA 进行数据验证。 它将使用表单和组合框填充。 【参考方案1】:

这个标准在哪里?条件是查询状态但不改变状态。

您正在处理随时间变化的一系列状态,您必须设置两种不同的状态。您所描述的 finite-state machine 的状态在特定事件中会发生变化。 IE。您必须执行一些更改现有条目的代码。像这样:

Private Sub Condition_AfterUpdate()
    Select Case Me!Condition
        Case "Working"
            Me!Status = "Assigned"
        Case "Under Maintenance"
            Me!Status = "Unavailable"
        Case "Damaged"
            Me!Status = "Unavailable"
    End Select
End Sub

Private Sub FirstName_AfterUpdate()
    If Nz(FirstName) <> "" Then
        Me!Condition = "Working"
        Me!Status = "Assigned"
    End If
End Sub

【讨论】:

感谢@olivier Jacot-Descombers 的回复,明天我到办公室时会检查您的解决方案。 可能需要在Condition_AfterUpdate 中包含对 FirstName 值的检查,以防用户在填充 FirstName 后错误地尝试更改 Condition。如果 FirstName 有值,也可以让 ConditionalFormatting 禁用 Condition 和 Status 组合框。 如果有一个 Status 组合框,可能还需要在其 AfterUpdate 事件中进行验证代码,以确保其用户输入与其他输入兼容。 是的。问题描述似乎不完整。

以上是关于IIF 关于标准的声明的主要内容,如果未能解决你的问题,请参考以下文章

19. 关于函数声明,以下不正确的说法是( )

IIF 不像 Access 2007 中的声明

关于 document.compatMode

关于ECMAScript6一些知识

探讨下c++的声明和定义问题,关于extern

关于变量类型FILE简要说明C