以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  【求助】跨表引用问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=106382)

--  作者:wjy0611
--  发布时间:2017/9/7 16:43:00
--  【求助】跨表引用问题
有两个表 OrderInfo(订单表) 和 CutorderTable(拆单表)
两个表里都有OrderCode(订单号)和AllQuantity(总数量)和PrdName(产品名称)列
当产品名称列发生变更后需要把订单表里的总数量同步到拆单表
当订单表里的订单号和拆单表里的订单号相同,产品名称相同,总数量同步没问题
当订单表里的订单号和拆单表里的订单号相同,产品名称不同,总数量同步没问题
当订单表里的订单号和拆单表里的订单号不同,产品名称相同,总数量会变成之前的总数量,没有更新成新的订单里的产品总数量。



--  作者:wjy0611
--  发布时间:2017/9/7 16:48:00
--  
拆单表里的DataColChanged事件代码
If e.DataCol.Name = "prdname" Then 
    If e.NewValue Is Nothing Then 
        e.DataRow("AllQuantity") = Nothing 
        e.DataRow("DistributiveQuantity") = Nothing 
        e.DataRow("OperatorID") = Nothing 
        e.DataRow("DealerName") = Nothing 
        e.DataRow("DealerCode") = Nothing 
        e.DataRow("OrderCode") = Nothing 
        e.DataRow("PrdCode") = Nothing 
        e.DataRow("DistributiveStatus") = Nothing 
        e.DataRow("ScanQuantity") = Nothing 
        e.DataRow("UplodaTime") = Nothing 
        e.DataRow("Standard") = Nothing 
        e.DataRow("DepotArea") = Nothing
        e.DataRow("Surplus") = Nothing  
    Else
        Dim dr As DataRow
       \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
        dr = DataTables("OrderInfo").Find("[prdname] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
        e.DataRow("AllQuantity") = dr("AllQuantity")
        e.DataRow("OperatorID") = dr("OperatorID")
        e.DataRow("DealerName") = dr("DealerName") 
        e.DataRow("DealerCode") = dr("DealerCode")
        e.DataRow("OrderCode") = dr("OrderCode")  
        e.DataRow("PrdCode") = dr("PrdCode")
        e.DataRow("DistributiveStatus") = dr("DistributiveStatus")
        e.DataRow("Standard") = dr("Standard")
        e.DataRow("DepotArea") = dr("DepotArea") 
        End If
    End If
End If


订单表里的DataColChanged事件
If e.DataCol.Name = "AllQuantity"
    Dim Filter As String = "[PrdName] = \'" & e.DataRow("PrdName") & "\'"
    Dim drs As List(Of DataRow) = DataTables("CutorderTable").Select(Filter)
    For Each dr As DataRow In drs
        dr("AllQuantity") = e.DataRow("AllQuantity")
    Next
End If


If e.DataCol.Name = "Prdname" Then 
 If e.NewValue Is Nothing Then 
        e.DataRow("Surplus") = Nothing 
    Else
           Dim dr As DataRow
        \'在拆单表查找同名的产品行,将找到的行赋值给变量dr
        dr = DataTables("CutorderTable").Find("[prdname] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
        e.DataRow("Surplus") = dr("Surplus")
        End If
End If
    End If




[此贴子已经被作者于2017/9/7 16:49:45编辑过]

--  作者:wjy0611
--  发布时间:2017/9/7 17:56:00
--  
有大佬帮帮忙吗
--  作者:有点甜
--  发布时间:2017/9/7 20:01:00
--  

查找的时候根据两列查找

 

If e.DataCol.Name = "AllQuantity"
    Dim Filter As String = "[PrdName] = \'" & e.DataRow("PrdName") & "\' and OrderCode = \'" & e.DataRow("OrderCode") & "\'"
    Dim drs As List(Of DataRow) = DataTables("CutorderTable").Select(Filter)
    For Each dr As DataRow In drs
        dr("AllQuantity") = e.DataRow("AllQuantity")
    Next
End If

--  作者:wjy0611
--  发布时间:2017/9/8 11:02:00
--  
以下是引用有点甜在2017/9/7 20:01:00的发言:

查找的时候根据两列查找

 

If e.DataCol.Name = "AllQuantity"
    Dim Filter As String = "[PrdName] = \'" & e.DataRow("PrdName") & "\' and OrderCode = \'" & e.DataRow("OrderCode") & "\'"
    Dim drs As List(Of DataRow) = DataTables("CutorderTable").Select(Filter)
    For Each dr As DataRow In drs
        dr("AllQuantity") = e.DataRow("AllQuantity")
    Next
End If


谢谢大佬给的思路,但是出现了个问题
我在这一行加了这个之后
    dr = DataTables("OrderInfo").Find("[prdname] = \'" & e.NewValue & "\' And [OrderCode] = \'" & e.NewValue & ")

在拆单表新添加一行输入订单号和产品名后没有反应
确定拆单表里输入的是订单表里已有的订单号和产品名

[此贴子已经被作者于2017/9/8 11:02:26编辑过]

--  作者:有点甜
--  发布时间:2017/9/8 11:13:00
--  

If e.DataCol.Name = "prdname" OrElse e.DataCol.name =  "OrderCode " Then
    Dim Filter As String = "[PrdName] = \'" & e.DataRow("PrdName") & "\' and OrderCode = \'" & e.DataRow("OrderCode") & "\'"
    Dim dr = DataTables("OrderInfo").Find(filter)
   
    If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
        e.DataRow("AllQuantity") = dr("AllQuantity")
        e.DataRow("OperatorID") = dr("OperatorID")
        e.DataRow("DealerName") = dr("DealerName")
        e.DataRow("DealerCode") = dr("DealerCode")
        e.DataRow("OrderCode") = dr("OrderCode")
        e.DataRow("PrdCode") = dr("PrdCode")
        e.DataRow("DistributiveStatus") = dr("DistributiveStatus")
        e.DataRow("Standard") = dr("Standard")
        e.DataRow("DepotArea") = dr("DepotArea")
    End If
End If

 


--  作者:wjy0611
--  发布时间:2017/9/8 11:37:00
--  
感谢,问题解决了
还有一个问题请问大佬
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:流水账.txt


图片点击可在新窗口打开查看此主题相关图片如下:捕获1111111.png
图片点击可在新窗口打开查看

我想让每一个订单号与产品名称 都相同的数据行里的剩余数量同步更新怎么做?


--  作者:wjy0611
--  发布时间:2017/9/8 11:49:00
--  
以下是引用有点甜在2017/9/8 11:13:00的发言:

If e.DataCol.Name = "prdname" OrElse e.DataCol.name =  "OrderCode " Then
    Dim Filter As String = "[PrdName] = \'" & e.DataRow("PrdName") & "\' and OrderCode = \'" & e.DataRow("OrderCode") & "\'"
    Dim dr = DataTables("OrderInfo").Find(filter)
   
    If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
        e.DataRow("AllQuantity") = dr("AllQuantity")
        e.DataRow("OperatorID") = dr("OperatorID")
        e.DataRow("DealerName") = dr("DealerName")
        e.DataRow("DealerCode") = dr("DealerCode")
        e.DataRow("OrderCode") = dr("OrderCode")
        e.DataRow("PrdCode") = dr("PrdCode")
        e.DataRow("DistributiveStatus") = dr("DistributiveStatus")
        e.DataRow("Standard") = dr("Standard")
        e.DataRow("DepotArea") = dr("DepotArea")
    End If
End If

 


感谢,问题解决了,请问大佬另一个问题,拆单表里相同订单号和产品名称的剩余数量怎么和新添加的一行相同

代码和截图我贴在了楼上

[此贴子已经被作者于2017/9/8 11:48:58编辑过]

--  作者:有点甜
--  发布时间:2017/9/8 13:00:00
--  
你代码有什么问题?上传实例具体说明。
--  作者:wjy0611
--  发布时间:2017/9/8 14:21:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test_201709081412.zip



我想让拆单表里订单号与产品名称相同的每一行 分配数量后,剩余数量那里的值都相同。

添加分配窗口里我选择产品名称的时候会报错,不知道怎么改。