以文本方式查看主题

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

--  作者:shiliang
--  发布时间:2014/3/26 8:38:00
--  代码问题
请教高手:
两个表:材料入库表,库存材料表,材料入库表的数据复制到材料库存表,以入库单号作为限制条件,下面的代码有问题 ,不执行复制
请教:我哪里写错了,谢谢

\'复制数据到库存表
    If e.DataCol.Name = "入库单号" Then
        Dim dh As DataRow
        dh = DataTables("库存材料表").Find("[入库单号] = \'" & e.NewValue & "\'")
        If dh IsNot Nothing Then
            Return  
        End If
    If dh Is Nothing Then
        If e.DataCol.Name = "审核" AndAlso e.DataRow("审核") = True Then
            Dim nma() As String = {"物料代码","物料名称","规格型号","仓库代码","仓库名称","常用计量单位","材料单价","入库数量","入库金额","入库日期","入库单号"} \'A表数据来源列
            Dim nmb() As String = {"物料代码","物料名称","规格型号","仓库代码","仓库名称","常用计量单位","材料单价","入库数量","入库金额","入库日期","入库单号"} \'B表数据接收列
            Dim dr As DataRow = DataTables("库存材料表").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr(nmb(i)) = e.DataRow(nma(i))
            Next
        End If
    End If


--  作者:Bin
--  发布时间:2014/3/26 8:41:00
--  
说明有找到对应的行吧,上个例子看看.

或者自己利用这个方法调试一下看看.http://www.foxtable.com/help/topics/1485.htm

--  作者:shiliang
--  发布时间:2014/3/26 8:45:00
--  
测试了,return  跳出,不执行下面代码
--  作者:Bin
--  发布时间:2014/3/26 8:47:00
--  
那不就印证了我2楼的回复么. 怎么只看后半句不看前半句?
--  作者:shiliang
--  发布时间:2014/3/26 9:02:00
--  
不好意思,我还是没搞明白
--  作者:Bin
--  发布时间:2014/3/26 9:06:00
--  
说明有找到对应的行,  这个很难理解吗?

你自己写的IF判断  If dh IsNot Nothing Then   如果有找到行就 return 


这.... 
不好意思,我没有办法想得出应该怎样解释才能让你明白了.  

--  作者:Bin
--  发布时间:2014/3/26 9:07:00
--  
代码难道不是你写的吗? 如果是这样的话可以理解你为什么不明白.

原因是库存表有相同入库单号的行,所以执行return了.

--  作者:lsy
--  发布时间:2014/3/26 9:08:00
--  
If e.DataCol.Name = "入库单号" Then
    Dim dh As DataRow
    dh = DataTables("库存材料表").Find("[入库单号] = \'" & e.NewValue & "\'")
    If dh IsNot Nothing Then
        Return
    End If
End If
If e.DataCol.Name = "审核" AndAlso e.DataRow("审核") = True Then
    Dim nma() As String = {"物料代码","物料名称","规格型号","仓库代码","仓库名称","常用计量单位","材料单价","入库数量","入库金额","入库日期","入库单号"} \'A表数据来源列
    Dim nmb() As String = {"物料代码","物料名称","规格型号","仓库代码","仓库名称","常用计量单位","材料单价","入库数量","入库金额","入库日期","入库单号"} \'B表数据接收列
    Dim dr As DataRow = DataTables("库存材料表").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
End If

--  作者:shiliang
--  发布时间:2014/3/26 9:08:00
--  
明白了,谢谢
--  作者:shiliang
--  发布时间:2014/3/26 9:11:00
--  
再请教一下,我的库存表是空的