逻辑运算符“AND”未返回预期的 true

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

我有一个表格(Frm_JobTicket),上面有一个未绑定的字段(Finish_Description)。这个值应该是从其他 3 个字段中收集的,也是在同一个表单上。他们是:

Cmbo_FinishNumber_JobTicket

Wrap_Color1

箔_颜色1

下面是没有返回预期 true 的代码

Private Sub Cmbo_FinishNumber_JobTicket_AfterUpdate()

    'Declare Variables
    Dim frm As Access.Form
    Set frm = Forms!Frm_JobTicket

    'Lookup Finish Description based off of the Finish Number entered in Paint Info area of Job Ticket
    frm("Finish_Description") = DLookup("Paint_Finish_Description", "Tbl_PaintFinish", "Finish_Number ='" & frm("Cmbo_FinishNumber_JobTicket") & "'")
        
        If IsNull(frm("Finish_Description")) Then
            GoTo AllFinishOptions
        Else
            Exit Sub
        End If

AllFinishOptions:
        If IsNull(frm("Cmbo_FinishNumber_JobTicket")) Then
            frm("Finish_Description") = frm("Wrap_Color1")
            MsgBox "Wrap Color", vbOKOnly
        ElseIf IsNull(frm("Wrap_Color1")) And IsNull(frm("Cmbo_FinishNumber_JobTicket")) Then
            frm("Finish_Description") = frm("Foil_Color1")
            MsgBox "Foil Color", vbOKOnly
        End If
    
End Sub

当在 Cmbo_FinishNumber_JobTicket 和 Wrap_Color1 都是空值的表单上运行记录时,它仍然输出第一个 MsgBox“Wrap Color”而不是我期望的第二个“Foil Color”。它似乎从未传递到语句的 ElseIf 部分。我不想使用 OR,因为它旨在成为一个渐进式列表。如果 Finish Number 为 null,则插入 Wrap Color。如果 Wrap Color 为空,则插入 Foil Color。

非常感谢任何关于修复此问题或解决方法的建议,谢谢!

vba ms-access ms-access-2016
1个回答
2
投票

切换你的条件,当你需要两者都为真并且只有一个对另一个为真时,你将始终点击 If 语句的第一部分(因此不会到达 ElseIf 部分):

If IsNull(frm("Wrap_Color1")) And IsNull(frm("Cmbo_FinishNumber_JobTicket")) Then
            frm("Finish_Description") = frm("Foil_Color1")
            MsgBox "Foil Color", vbOKOnly
ElseIf IsNull(frm("Cmbo_FinishNumber_JobTicket")) Then
            frm("Finish_Description") = frm("Wrap_Color1")
            MsgBox "Wrap Color", vbOKOnly
End If
© www.soinside.com 2019 - 2024. All rights reserved.