以文本方式查看主题

-  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=61703)

--  作者:huangfanzi
--  发布时间:2014/12/17 15:58:00
--  [求助]代码错误,求指正

以下代码写在原料采购入库明细的DataColChanged事件
代码用意:
1、当表“原料采购入库明细”中录入“凭证号”(即原料采购入库通知单的通知单号),表“原料采购入库通知明细”的逻辑列“是否入库”打上TRUE,此功能已经实现
2、当表“原料采购入库明细”“凭证号”列发生变化后,检查表“原料采购入库通知明细”中的“通知单号”是否出现在“原料采购入库明细”中,如果不存在,将通知单的逻辑列“是否入库”打上False,说明还没入库。

现在出现一个问题,dr3 = DataTables("原料采购入库明细").Find("[凭证号] <> \'" & dr2.("通知单号") & "\'") 此条语句错误,不知错哪了,无法保存表事件

\'凭证号录入后锁定对应的"原料采购入库通知明细"的"是否入库"列
If e.DataCol.Name = "凭证号" Then \'如果内容发生变动的是凭证号列
    If e.NewValue Is Nothing Then \'如果新值是空白
        e.DataRow("牌号") = Nothing \'那么清空此行此列的内容
        e.DataRow("厚度") = Nothing \'那么清空此行此列的内容
        e.DataRow("宽度") = Nothing \'那么清空此行此列的内容
        e.DataRow("重量") = Nothing \'那么清空此行此列的内容
        
    Else
        Dim dr1 As DataRow
        \'在"原料采购入库通知明细"查找凭证号的行
        dr1 = DataTables("原料采购入库通知明细").Find("[通知单号] = \'" & e.NewValue & "\'")
        If dr1 IsNot Nothing Then \'如果找到了,也就是dr不是Nothing
            dr1("是否入库")=True
        End If

        ‘以上代码执行正常,下面的开始出错

        For Each dr2 As DataRow In DataTables("原料采购入库通知明细").DataRows
            Dim dr3 As DataRow
            dr3 = DataTables("原料采购入库明细").Find("[凭证号] <> \'" & dr2.("通知单号") & "\'")
            
            If dr3 IsNot Nothing Then \'如果找到了,也就是dr3不是Nothing
                dr2("是否入库")=False
            End If   
        Next
        
    End If
End If

--  作者:有点甜
--  发布时间:2014/12/17 16:03:00
--  

dr3 = DataTables("原料采购入库明细").Find("[凭证号] <> \'" & dr2("通知单号") & "\'")


--  作者:huangfanzi
--  发布时间:2014/12/17 16:09:00
--  
第一次自己编这样复杂的代码,不像之前抄来的,想不到在这么一个细小的地方出错了,来回看了5次才发现多了一个点,代码还是写的不熟悉,功能已经实现了,谢谢。