以文本方式查看主题 - 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
|
||||
-- 作者:wjy0611 -- 发布时间:2017/9/8 11:37:00 -- 感谢,问题解决了 还有一个问题请问大佬
我想让每一个订单号与产品名称 都相同的数据行里的剩余数量同步更新怎么做?
|
||||
-- 作者:wjy0611 -- 发布时间:2017/9/8 11:49:00 -- 以下是引用有点甜在2017/9/8 11:13:00的发言:
If e.DataCol.Name = "prdname" OrElse e.DataCol.name = "OrderCode " Then
感谢,问题解决了,请问大佬另一个问题,拆单表里相同订单号和产品名称的剩余数量怎么和新添加的一行相同 代码和截图我贴在了楼上 [此贴子已经被作者于2017/9/8 11:48:58编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/8 13:00:00 -- 你代码有什么问题?上传实例具体说明。 |
||||
-- 作者:wjy0611 -- 发布时间:2017/9/8 14:21:00 --
我想让拆单表里订单号与产品名称相同的每一行 分配数量后,剩余数量那里的值都相同。 添加分配窗口里我选择产品名称的时候会报错,不知道怎么改。
|