以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  三个条件只要满足一个的表达问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=157300)

--  作者:foxyuan
--  发布时间:2020/10/11 19:19:00
--  三个条件只要满足一个的表达问题
以下两段代码,我感觉应当是一样的,为什么实际是不同的结果呢?感觉是三个条件只要满足一个就删除这行,为什么要先看一下第一个条件的结果呢?



For Each dr As DataRow In DataTables("供应商付款收票").Select("")
    Dim r As DataRow
    r = DataTables("采购合同").Find("客户编号 = \'" & dr("客户编号") & "\'" )
    If r IsNot Nothing Then
        If Round2(dr("发票应付款金额(元)"),2) = 0.00 AndAlso Round2(dr("合同应付款金额(元)"),2) = 0.00 Then 
            dr.Delete()
        End If
    Else If Round2(dr("发票应付款金额(元)"),2) = 0.00 Then
        dr.Delete()
    End If
Next


For Each dr As DataRow In DataTables("供应商付款收票").Select("")
    Dim r As DataRow
    r = DataTables("采购合同").Find("客户编号 = \'" & dr("客户编号") & "\'" )
    If r IsNot Nothing  AndAlso  Round2(dr("发票应付款金额(元)"),2) = 0.00 AndAlso Round2(dr("合同应付款金额(元)"),2) = 0.00 Then 
            dr.Delete()
    Else If Round2(dr("发票应付款金额(元)"),2) = 0.00 Then
        dr.Delete()
    End If
Next


--  作者:有点蓝
--  发布时间:2020/10/11 21:14:00
--  
不一样的,第一段代码只要【If r IsNot Nothing Then】不成立就执行Else If;第二段代码要3个条件同时不成立才能执行Else If
--  作者:foxyuan
--  发布时间:2020/10/11 21:27:00
--  
想明白了。不过好象不是蓝老师说的,第二段应当是3个条件有一个不成立就执行else if 了
--  作者:有点蓝
--  发布时间:2020/10/11 21:48:00
--  
嗯,是的,其中一个不成立就执行