我有一个名为“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")
这个标准在哪里?标准是查询状态但不更改状态。
您正在处理随时间变化的一系列状态,您必须设置两种不同的状态。你在描述一个在特定事件中状态发生变化的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