IIF关于标准的声明

时间:2019-02-17 20:45:12

标签: vba ms-access ms-access-2007

我有一个查询,查询字段名为“ FirstName”,“ Condition”,“ Status”。条件字段可以是“工作中”或“正在维护中”或“损坏”,对于状态,则为“可用”或“不可用”或“已分配”。

如果“条件”设置为“维护中”,则状态应切换为“不可用”。如果将“条件”设置为“损坏”,情况也是如此。但是,如果填充了“名字”,则“条件”必须切换为“工作”,并且“状态”也应设置为“已分配”

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

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

1 个答案:

答案 0 :(得分:0)

此标准在哪里?条件是查询状态,但不会更改。

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

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