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 关于标准的声明的主要内容,如果未能解决你的问题,请参考以下文章