IIF关于标准的声明

问题描述 投票:0回答:1

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

如果Condition设置为“Under Maintenance”,则Status应切换为“Unavailable”。如果Condition设置为“Damaged”,则相同。但是,如果填充了FirstName,则Condition必须切换为“Working”,Status也应设置为“Assigned”

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

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

vba ms-access ms-access-2007
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.