Ms access 如何组合多个If语句/Dlookup函数?

Ms access 如何组合多个If语句/Dlookup函数?,ms-access,if-statement,vba,if-this-then-that,Ms Access,If Statement,Vba,If This Then That,单击表单上的按钮时,我正在运行以下代码: If DLookup("ECN_Class_I_Change", "ENGINEERING_CHANGE_NOTICE_TABLE", "[ECN_Class_I_Change] = -1") Then If DLookup("ECN", "ENGINEERING_CHANGE_NOTICE_TABLE", "'ECN' = 'Forms!DRAWING_INFO_FORM!Subform_DRAWING_STATUS!Subform_DRAWING_S

单击表单上的按钮时,我正在运行以下代码:

If DLookup("ECN_Class_I_Change", "ENGINEERING_CHANGE_NOTICE_TABLE", "[ECN_Class_I_Change] = -1") Then
If DLookup("ECN", "ENGINEERING_CHANGE_NOTICE_TABLE", "'ECN' = 'Forms!DRAWING_INFO_FORM!Subform_DRAWING_STATUS!Subform_DRAWING_STATUS_ECN!ECN'") Then
    strMessage = "Change third digit."
    MsgBox strMessage, vbInformation, "Action Required"

    Else

 If DLookup("PCP", "REVIEW_PANEL_TABLE", "[PCP] = -1") Then
 If DLookup("GWSHW_BL", "REVIEW_PANEL_TABLE", "'[GWSHW_BL]' = 'Forms!DRAWING_INFO_FORM!Subform_DRAWING_STATUS!Subform_DRAWING_STATUS_CONFIGURATION_HWCI_BL!BL_HWCI_HWCI'") Then
 If DLookup("GWSHW_HW", "REVIEW_PANEL_TABLE", "'[GWSHW_HW]' = 'Forms!DRAWING_INFO_FORM!Subform_DRAWING_STATUS!Subform_DRAWING_STATUS_CONFIGURATION_HWCI_BL!BL_HWCI_HWCI'") Then
    strMessage = "Change fourth digit - HWCI/BL has been certified."
    MsgBox strMessage, vbInformation, "Action Required"

        Else
          strMessage = "Change fifth digit"
          MsgBox strMessage, vbInformation, "Action Required"
代码没有抛出任何错误,但不会导致预期的行为。我相当确信,问题在于连续组合多个If/Dlookup函数。我一次只使用一个,所以我不知道如何组合这些,因为这不仅仅是一个Dlookup的多个条件,而是多个Dlookup语句

如蒙协助,将不胜感激

更新2018年8月5日美国东部时间下午4:55 由于这些建议,代码的第一部分现在可以工作了。仍然无法使此部分正常工作:

If Not IsNull(DLookup("PCP", "REVIEW_PANEL_TABLE", "[PCP] = -1")) Then
If Not IsNull(DLookup("GWSHW_BL", "REVIEW_PANEL_TABLE", "GWSHW_BL = " & Me.Subform_DRAWING_STATUS!Subform_DRAWING_STATUS_CONFIGURATION_HWCI_BL!BL_HWCI_BL)) Then
If Not IsNull(DLookup("GWSHW_HW", "REVIEW_PANEL_TABLE", "GWSHW_HW = '" & Me.Subform_DRAWING_STATUS!Subform_DRAWING_STATUS_CONFIGURATION_HWCI_BL!BL_HWCI_HWCI & "'")) Then
   strMessage = "Change fourth digit - HWCI/BL has been certified."
   MsgBox strMessage, vbInformation, "Action Required"

      Else

        strMessage = "Change fifth digit"
        MsgBox strMessage, vbInformation, "Action Required"

单击按钮时,根本没有发生任何操作。如注释中所述,PCP是一个是/否字段,GWSHW BL是一个五位标识符(1.2.0.0.01),GWS HW HW是一个三个字母的缩写词(ABC)。

DLookup将返回一个值,如果没有匹配项,则返回Null。因此,if在条件测试中需要考虑NULL:

不要对字段名使用撇号分隔符。并且可能应该包含表单控件引用。引用子窗体容器控件,而不是它所包含的窗体的名称:

如果ECN是文本类型字段,请在参数上使用撇号分隔符:

如果DLookup(“ECN”、“工程变更通知表”、“ECN=””和表单!图纸信息表单!子表单!图纸状态!ECN&“””)

请使用我

如果DLookup(“ECN”、“工程变更通知表”、“ECN=””和Me.Subform\u DRAWING\u STATUS!ECN&“””)

建议将子窗体容器命名为与其所持有的对象不同的名称,如ctrStatus,然后:

这些示例引用了一个字段名。如果要引用名为tbxECN的控件:


如果DLookup(“ECN”、“工程变更通知表”、“ECN=””&Me.ctrStatus.Form.tbxECN&“””)

预期的行为是什么?注意编辑问题以显示更好的缩进,使代码更易于理解。和对我的答案的编辑,您可能没有看到。为什么取消编辑?代码不太容易理解。工程变更通知表和评审面板表是如何关联的?有ID字段吗?一对多关系?很抱歉,我不是有意取消编辑。我在格式化代码部分和编辑帖子时遇到问题。这是我第一次使用这个论坛。预期的行为是基于If/Then语句生成一个消息框。这是一个很大的帮助。我添加了If Not IsNull以到达Dlookup,并用于在ECN字段中使用撇号分隔符。我在用“我”求和。引用当前表单?我仍然对与PCP、HWSHW BL和GWSHW HW字段相关的三个Dlookup语句有疑问。。。PCP是一个是/否字段,GWSHW BL是一个五位数的条目(1.2.0.0.00),GWSHW HW是一个三个字母的首字母缩写(ABC)。当我运行这段代码时,什么也并没有发生。更新的代码已经添加到原始问题中。谢谢你的帮助!