我有一个查询,查询字段名为“ FirstName”,“ Condition”,“ Status”。条件字段可以是“工作中”或“正在维护中”或“损坏”,对于状态,则为“可用”或“不可用”或“已分配”。
如果“条件”设置为“维护中”,则状态应切换为“不可用”。如果将“条件”设置为“损坏”,情况也是如此。但是,如果填充了“名字”,则“条件”必须切换为“工作”,并且“状态”也应设置为“已分配”
下面的代码仅是我的猜测,我知道它不起作用。
Status: IIf(IsNull([FirstName],"Available","Unavailable","Assigned" and [Condition]=Damaged),"Unavailable","Available")
答案 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